1. 소켓 생성 (ex) 전화기 구입
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
- domain : 소켓이 사용할 프로토콜 체계(Protocol Family) 전달.
프로토콜 체계
- IP_INET( IPv4 인터넷 프로토콜 체계)
- IP_INET6( IPv6 인터넷 프로토콜 체계)
- IP_LOCAL( 로컬 통신을 위한 UNIX 프로토콜 체계)
- IP_PACKET( Low Level 소켓을 위한 프로토콜 체계)
- IP_IPX (IPX 노벨 프로토콜 체계)
- type : 소켓의 데이터 전송방식에 대한 정보 전달.
- SOCK_STREAM( 연결지향성 소켓)
- SOCK_DGRAM( 비 연결지향성 소켓)
- protocol : 두 컴퓨터간 통신에 사용되는 프로토콜 정보 전달.
= 프로토콜의 최종 선택!
- socket 함수의 첫 번째, 두 번째 전달인자를 통해서도 충분히 원하는 유형의 소켓을 생성할 수 있다. 따라서 대부분의 경우, 세 번째 인자로 그냥 0을 넘겨줘도 무방하다.
2. 연결요청 (ex) 전화 걸기
#include <sys/socket.h>
int connect(int sock, struct sockaddr *servaddr, socklen_t addrlen);
- sock : 클라이언트 소켓의 파일 디스크립터 전달.
- servaddr : 연결요청 할 서버의 주소정보를 담은 변수의 주소 값 전달.
- addrlen : 두 번째 매개변수 servaddr에 전달된 주소의 변수 크기를 바이트 단위로 전달.
* 클라이언트 소켓의 주소정보
- bind 함수를 통해서 소켓에 IP와 PORT를 직접 할당하지 않아도 connect 함수호출 시 자동으로 소켓에 IP와 PORT가 할당된다. 따라서 클라이언트 프로그램을 구현할 때에는 bind함수를 명시적으로 호출할 필요가 없다.
<참조 : 열혈 TCP/IP 소켓 프로그래밍>
'삽질의 현장 > - ETC' 카테고리의 다른 글
[삽잡이::JPEG] JPEG에 대해서...(2) (0) | 2014.01.20 |
---|---|
[삽잡이::JPEG] JPEG에 대하여... (1) (0) | 2014.01.20 |
[삽잡이::Socket] Socket 프로그래밍 구조 (server) (0) | 2013.09.15 |
[삽잡이::Socket] 주소체계 (0) | 2013.09.15 |
[삽잡이::Socket] 소켓의 이해 (0) | 2013.09.15 |