본문 바로가기

Computer/ServerProgramming

소켓의 종료 1. 소켓 완전 종료 (closesocket) - 상대방에서 EOF 을 전송 - 해당 소켓을 더 이상 사용하지 않는다. (recv size 0) closesocket( SOCKET s ); 2. half-close (shutdown) - 입력, 출력 스트림 또는 모두를 조건에 따라 종료 - 한쪽에서 일방적으로 닫는 방식 - Shutdown 을 하더라도 소켓은 최종적으로 종료를 해야한다 int shutdown( SOCKET s, int how ); 인자(how) : SD_RECEIVE(입력), SD_SEND(출력), SD_BOTH(모두) 더보기
소켓 생성 생성 함수 [리눅스] int socket (int domain, int type, int protocol) [윈도우] SOCKET socket(int af, int type, int protocol) 사용 예 socket(PF_INET, SOCK_STREAM, 0); 더보기
소켓(Socket) 이란? - 멀리 떨어져있는 두개의 HOST 를 연결해 주는 매개체 - 프로토콜에 독립적이며 전송타입지정(TCP/UDP)이 필요한다. - 네트워크 프로그래밍에서는 일반적으로 소켓이라고 하면 윈도우 소켓(Windows)/버클리소켓(UNIX/Linux) API규약을 말한다. 소켓관련 함수들... 윈도우 소켓(윈속) API : MS에서 NT 3.51 에서 버전 1.1 지원 현재는 윈도우 소켓 2.2 버전 사용 SOCKET socket(int af, int type, int protocol); int bind(SOCKET s, const struct sockaddr FAR* name, int namelen); int listen(SOCKET s, int backlog); SOCKET accept(SOCKET s, str.. 더보기
UDP (미완성:그림 추가할거에요.) 1. 비 연결 지향형 소켓(SOCK_DGRAM) - IP를 기반으로 데이터를 전송한다. - 연결상태가 존재하지 않는다.(연결 설정 및 종료 과정 없음) - 전송되는 순서에 상관없이 가장 바른 전송을 지향한다. - 전송되는 데이터는 손실 될 수도 있고, 에러가 발생할 수도 있다. - 전송되는 데이터의 경계가 존재한다. - 한번에 전송되는 데이터의 크기는 제한된다. - 소켓은 하나만 생성 2. PORT에 의한 데이터 수신 더보기
TCP (미완성:그림 추가할게요.) 1. 연결 지향형 소켓(SOCK_STREAM) - 전송하는 순서대로 데이터가 전달된다. - 에러나 데이터의 손실 없이 무사히 전달된다. - 전송되는 데이터의 경계가 존재하지 않는다. 2. 연결, 송/수신, 연결 종료 구조 더보기
자신의 IP 가져오기 서버를 하다가 보면 가끔 자기 자신의 IP가 필요할 때가 있습니다. 여러가지 방법이 있겠지만... 주로 getsockname() 또는 gethostname()과 gethostbyname()을 사용한 2가지 방법으로 사용하더군요. 저는 이호성 님의 블로그(astromaker.egloos.com) 에서 본 글(http://astromaker.egloos.com/tb/81576) 을 참고하여 사용했습니다. 이호성 님이 말씀하셨듯이 이렇게 사용하려면 우선은 bind를 해야됩니다. 제가 적은 소스에는 바인드 부분도 포함하였습니다.( 제가 까먹을까봐... ^^;) WSADATA wsaData; SOCKET tempSocket; struct sockaddr_in temp_addr; if( ::WSAStartup( M.. 더보기