TCP(연결형)소켓을 사용하는 클라이언트 프로그램
TCP 클라이언트 프로그램의 작성 절차는 일반적으로 위와 같다. 소켓의 프로토콜 체계를 PF_INET, 서비스타입을 SOCK_STREAM으로 선택 ex) socket(PF_INET, SOCK_STREAM, 0);
클라이언트는 connect를 호출하기 전에 연결하고자하는 서버의 주소를 지정하여야 하는데, IP주소와 PORT를 포함하는 소켓주소 구조체 sockaddr_in을 작성해야한다. 예제는 다음과 같다.
struct sockaddr_in serv_addr;
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_falimy=AF_INET;
serv_addr.sin_addr.s_addr=inet_addr("127.0.0.1");
serv_addr.sin_port=htons(9190);
서버 구조체를 이용하여 서버에 접속을 요청하기위해 connect()를 호출한다. 함수 원형은 다음과 같다.
int connect(int s, const struct sockaddr *addr, int addrlen);
ex) connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
클라이언트가 서버와 접속이되면 send(), recv() 또는 read(), write()를 사용하여 메시지를 송수신 할수있다.
문 법 |
인 자 |
|
int send(int s, char* buf, int
length, int flags); |
s |
소켓 번호 |
buf |
전송할 메시지가 저장된 버퍼 |
|
length |
buf버퍼의 크기 |
|
flags |
보통 0 |
|
int write(int s, const void*
buf, int length); |
s |
소켓 번호 |
buf |
전송할 메시지가 저장된 버퍼 |
|
length |
buf버퍼의 크기 |
|
int recv(int s, char *buf, int
length, int flags); |
s |
소켓 번호 |
buf |
전송할 메시지가 저장된 버퍼 |
|
length |
buf버퍼의 크기 |
|
flags |
보통 0 |
|
int read(int s, void* buf, int
length); |
s |
소켓 번호 |
buf |
전송할 메시지가 저장된 버퍼 |
|
length |
buf버퍼의 크기 |
'네트워크 > 리눅스 기반 강의' 카테고리의 다른 글
2010년 12월 22일 수요일 시그널 함수 (0) | 2010.12.22 |
---|---|
2010년 12월 21일 화요일 소켓 옵션을 변경하는 함수(수업중) (0) | 2010.12.21 |
2010년 12월 15일 수요일 인터넷 주소 변환 & 도메인네임으로 IP주소 알아내기 (0) | 2010.12.15 |
2010년 12월 14일 화요일 UNIX BSD 소켓 시스템 콜 (0) | 2010.12.14 |
2010년 12월 13일 월요일 (TCP/IP 기초) (0) | 2010.12.13 |