- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
목록★─Programing/☆─TCP IP (20)
드럼치는 프로그래머
소켓 프로그래밍 하다보면 AF_INET을 쓰는데가 있고, PF_INET을 쓰는데가 있다. 이에 이 두 개념에 대한 내용을 정리해 보고자 한다. 다음의 코드를 살펴보자. servSock = socket( PF_INET, SOCK_STREAM, IPPROTO_TCP ); 여기서 SOCK_STREAM 으로 되어있습니다. 이것은 연결형 서버를 말하는 겁니다. 즉, TCP의 서비스를 이용하겠다는 것입니다. 여기서 마지막 인자를 IPPROTO_TCP 라고 되어있는데 꼭 이렇게 써주는 것은 아닙니다. 보통은 0 값을 전달합니다. 어느 것을 사용하나 상관은 없습니다. 명시적인 것이 좋으신 분은 IPPROTO_TCP라고 써주시면 되겠습니다. 여기서 PF_INET 를 사용했는데 AF_INET 와 무엇이 다를까요? PF 는..
쓰레드를 만든다음 바로 CloseHandle()로 handle을 닫던가 아님 쓰레드 종료 이벤트 발생시 CloseHandle()을 이용 handle을 닫아야 한다. 아래는 CreateThread()함수를 이용하여 쓰레드 생성 후 바로 CloseHandle()함수를 호출하여 handle을 닫는 것에 대한 답변이다... 쓰레드를 만든다음 바로 CloseHandle()하는 것이 정상입니다. 그렇게 한다고 해서 쓰레드를 쓰지 못하느것도 아니고요. 쓰레드의 경우 생성하면서 참조 번호(?)라는게 생기는데 마치 dll처럼여. 생성하면 참조번호가 하나 증가하고 쓰레드 함수가 호출되면 또 참조번호가 증가합니다. 따라서 쓰레드를 만들게 되면 참조 번호가 2가 됩니다. 그런데 쓰레드 함수가 리턴하게 되면(쓰레드 함수내에서 ..
쓰레드도 커널에 의해서 생성되는 리소스이므로 커널 오브젝트가 생성될 것이고 함수호출이 끝나면 커널 오브젝트를 의미하는 핸들이 리턴될 것이다. #include HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // Security Descriptor SIZE_T dwStackSize, // initial stack size LPTHREAD_START_ROUTINE lpStartAddress, // thread function LPVOID lpParameter, // thread argument DWORD dwCreationFlags, // creation option LPDWORD lpThreadId // thread identifier - l..
다음과 같은 동기화 되지 않은 쓰레드 코드가 있다고 가정해보자 int suInt[100]; DWORD WINAPI MyThread_1(LPVOID arg) { for (int i=0; i=0; i--) { suInt[i] = 2; Sleep(10); } return 0; } void main() { HANDLE hThread[2]; DWORD ThreadId[2]; hThread[0] = CreateThread(NULL,0,MyThread_1,NULL,0,&ThreadId[0]); hThread[1] = CreateThread(NULL,0,MyThread_2,NULL,0,&ThreadId[1]); for(int i=0; i
■ IPv4란 = IP버전4는 현재의 인터넷 및 TCP/IP 네트워크에서 활용하는 IP주소 체계이다. IP 버전 6는 Ipv4의 IP주소 부족 및 보안 문제를 해결하기 위해 나온 차세대 IP표준을 말한다. ■ IPv4의 주소체계 = 먼저 Ipv4 주소 체계에 대해 살펴보도록 한다. IP주소 체계는 총 4bytes(32bits)로 표시하며 한 바이트씩 점(.)으로 분리하여 10진수로 나타낸다. (예를 들면 165.133.107.57와 같이 10진수로 표기) 하나의 IP주소는 크게 네트워크주소와 컴퓨터주소 두 부분으로 나뉘며 네트워크의 크기나 호스트 컴퓨터의 수에 따라 Class A, B, C, D, Class E등급으로 나뉜다. 이 중 Class A, B, C가 일반 사용자에게 부여 된다. IP주소 체계를..
TCP/IP 프로트콜 구조 - 종단 시스템(end-system) : 최종 사용자를 위한 application을 수행하는 주체 인터넷에 연결된 PC, 워크스테이션, PDA,휴대폰 등이 이에 속함 - 라우터(router) : 종단 시스템이 속한 네트워크와 다른 네트워크를 연결함으로써 서로 다른 네트워크에 속한 종단 시스템끼리 상호 데이터를 교환할 수 있도록 하는 장비다. 종단 시스템과 종단 시스템간 통신을 수행하기 위해서는 정재힌 절차와 방법이 필요하다. 이를 프로토콜(protocol)이라 한다. 가장 핵심적으로 사용되는 프로토콜로는 TCP와 IP가 있으며 이를 총칭하여 TCI/IP 프로토콜이라고 부른다. 일반적으로 프로토콜은 기능별로 나누어 계층적으로 구현하며, TCP/IP 프로토콜도 이와 같은 구조를 따..
IPv4의 주소 체계를 나타내는 구조체 struct sockaddr_in { sa_family_t sin_family; /* 주소 체계(address family) */ uint16_t sin_port; /* 16비트 TCP / UDP Port */ struct in_addr sin_addr; /* 32비트 IPv4 주소 */ char sin_zero[8]; /* 사용되지 않음 */ }; struct in_addr { uint32_t s_addr; /* 32비트 IPv4 인터넷 주소 */ }; 주소체계(adress Family) 정의 AF_INET IPv4 인터넷 프로토골 AF_INET6 IPv6 인터넷 프로토골 AF_LOCAL Local 통신을 위한 UNIX 프로토콜
★ TCP & UDP IP(Internet Protocol)를 이용하면, LAN환경이든 인터넷 환경이든 두대의 컴퓨터 간에 IP 주소를 기본으로 데이터가 전달되고, 비정상적인 경우에 대한 해결책으로 ICMP까지 지원되는 상황까지가 해결되었다. 그러나 실제 통신을 수행하는 상황에서 아직 해결되지 못한 2가지 문제점이 있다. 첫번째 문제점은 IP의 역할이 Host to Host 즉, 특정한 장치에서 장치로의 이동만을 지원한다. 여기서, Host란 장비 1대 자체를 말하게 된다. 즉, 장비에서 장비로의 이동은 IP로 해결되지만, 문제는 하나의 장비안에 수많은 프로그램들이 통신을 하는 경우에 이 프로그램들간에 구분이 불가능 하다는 점이다. 즉, 지금 받은 메시지가 웹서핑용 프로그램이 처리해야 하는지, 아니면 메..
WSAGetLastError WSAGetLastError 함수는 가장 최근에 일어난 실패한 소켓연산의 에러코드를 얻어내는 함수입니다. int WSAGetLastError (void); Remarks WSAGetLastError 함수는 마지막으로 발생한 네트웍 에러를 반환합니다. 특정한 윈도우 소켓이 에러가 발생되면, 이 함수는 그에 적절한 에러코드를 반환하게되죠. 이 에러코드는 getsockopt 함수를 SO_ERROR 옵션으로 호출해서 얻은 에러코드와는 다를 수 있으니 염두해 두도록 하시구요. WSAGetLastError 는 다중쓰레드 어플리케이션이 경우 모든 쓰레드의 소켓에 대해서 동작을 하게 된다는 점두 염두해 두도록 합시다. 성공적인 소켓 함수의 호출이라든지, WSAGetLastError의 호출은..