본문 바로가기

소켓

socket 1.소켓(Socket) (1) socket이란? 정규 유닉스 파일 기술자를 이용하여 다른 프로그램과 정보를 교환하는 방법을 의미한다. (2) 소켓의 종류 1) 스트림소켓(Stream socket) : 양측을 신뢰성있게 연결해 주는 소켓이다. 보통 SOCK_STREAM이라 지칭되며 이 소켓을 통할 경우 전송순서를 정확히 유지하고 에러 까지 교정된다. TCP 프로토콜을 이용한다. 대표적으로 이 소켓을 이용하는 것이 텔넷이다. 입력한 모든 글자는 순서대로 전달이 되어야 하는 경우에 사용된다. 2) 데이타그램소켓(Datagram socket) : 비연결소켓이라고도 하고 SOCK_DGRAM이라 지칭된다. 신뢰도 가 떨어지며 패킷들의 순서가 바뀌어서 도착할 수 있다. UDP 프로토콜을 이용한다. 3) raw소켓(r.. 더보기
socket 함수 socket socket 함수는 소켓을 만들고 소켓 기술자(descriptor)를 어플리케이션에 반환 하는 함수 입니다. SOCKET socket ( int af, int type, int protocol ); Parameters af [입력] 어드레스 체계(address family)를 결정합니다. type [입력] 소켓의 타입을 결정합니다. 윈도우즈 소켓 1.1에서는 두가지 종류의 타입을 제공합니다. 아래에 그 종류에 대해서 간단히 설명했습니다. Type Explanation SOCK_STREAM 신뢰성있고, 접속지향적인, 하지만 느린, TCP 어드레스 체계에 사용됩니다. SOCK_DGRAM 비접속이고, 신뢰성없는 그러나 빠른, UDP 어드레스 체계에 사용됩니다. protocol [입력] 소켓과 함께.. 더보기
linger 함수 LINGER struct linger { u_short l_onoff; u_short l_linger; } Members l_onoff SO_LINGER를 활성화 하기위해서, 어플레케이션은 l_onoff 멤버를 0이 아닌 값으로 설정하고, l_linger 멤버를 0으로설정하거나, 원하는 타임아웃 값(초 단위로)을 설정해야 한 후, setsockopt 함수를 호출해야 합니다. SO_DONTLINGER를 활성화 하기위해서(즉, SO_LINGER를 비활성화 한다는 얘기겠죠) l_onoff 멤버를 0으로 설정하고, setsockopt 함수를 호출합니다. 비동기 소켓에서 0이 아닌 타임아웃 값을 가지고 SO_LINGER를 활성화 하는 것은 바람직하지 않다는 점을 염두해 두기 바랍니다. SO_LINGER를 활성화 .. 더보기
servent SERVENT struct servent { char FAR * s_name; char FAR * FAR * s_aliases; short s_port; char FAR * s_proto; }; Members s_name 서비스의 공식적인 이름 s_aliases 서비스 이름과 연관된(앨리어스 집단) 널로 끝나는 스트링 배열 s_port 서비스가 통신할 포트번호. 포트번호는 네트웍 바이트 오더입니다. s_proto 서비스와의 통신에 사용될 프로토콜 이름을 지정합니다. See Also overview, HOSTENT, PROTOENT 더보기
setsockopt 함수 setsockopt setsockopt 함수는 소켓 옵션을 설정하는 함수입니다. int setsockopt ( SOCKET s, int level, int optname, const char FAR * optval, int optlen ); Parameters s [입력] 대상 소켓의 기술자(descriptor)를 명시합니다. level [입력] 소켓 옵션 레벨이 정의 되며, SOL_SOCKET 과 IPPROTO_TCP 중 하나가 될 수 있습니다. optname [입력] 셋팅 하기위한 소켓옵션 값입니다. optval [입력] 검색된 옵션을 저장 하기위한 데이터 버퍼를 포인트 합니다. optlen [입력] optval 매개변수 버퍼의 크기 Remarks setsockopt 함수는 지정된 소켓의 옵션을 특정.. 더보기
recv 함수 recv recv 함수는 접속되어 있는 소켓으로부터 들어오는 데이터를 수신하는 함수입니다. int recv ( SOCKET s, char FAR* buf, int len, int flags ); Parameters s [입력] 접속된 소켓을 명시하는 기술자(descriptor)입니다. buf [출력] 수신받은 데이터를 저장할 버퍼입니다. len [입력] 버퍼의 길이를 명시합니다. flags [입력] recv 함수의 기본작업(수신받은 데이터를 큐에서 읽어내고 제거하는 작업)이 아닌 다른 작업을 하게 하기 위해 이 플래그를 설정합니다. Remarks recv 함수는 접속 지향형 소켓(connection-oriented socket)이나 비접속 지향형 소켓(connectionless socket)에서 수신되는.. 더보기
Select 함수 select select 함수는 한개 또는 그 이상의 소켓 상태를 결정하고, 동기 입출력을 수행 하기위해 필요할 경우 대기 하는 함수입니다. int select ( int nfds, fd_set FAR * readfds, fd_set FAR * writefds, fd_set FAR * exceptfds, const struct timeval FAR * timeout ); Parameters nfds [입력] 버클리 소켓과 호환되는 소켓을 제외 하고는 이 매개변수는 무시됩니다. 버클리 소켓에서 이 매개변수는 I/O 변화를 감지 할 총 소켓의 갯수+1 의 값을 지정하는 용도로 사용합니다. readfds [입/출력] 읽기상태의 변화를 감지할 소켓을 지정합니다. writefds [입/출력] 쓰기상태의 변화를 감.. 더보기