연결이 되었다가 바로 끊어지는 소캣프로그래밍으로 구현을 해보도록 했다.
1. TCP server 구현
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
32
33
34
35
36
37
38
39 |
#include<stdio.h>
#include<WinSock.h>
#pragma comment(lib, "ws2_32.lib")
int main()
{
WSADATA wsaDate;
SOCKET hServ, hClnt;//소캣을 가르키는 핸들(숫자, 구문자)
WSAStartup(MAKEWORD(2, 2), &wsaDate);//소캣 라이브러리 장착
//소캣 생성
hServ = socket(PF_INET, SOCK_STREAM, 0); // TCP를 사용하는 소캣생성
//주소설정
SOCKADDR_IN servAddr, clntAddr;//소캣 구조체 선언
int clntAdrsize;
memset(&servAddr, 0, sizeof(servAddr));
servAddr.sin_family = AF_INET;
servAddr.sin_port = htons(9000);//빅엔디안(htons)로 바꾸어 준다.
servAddr.sin_addr.s_addr = htonl(INADDR_ANY);
bind(hServ, (SOCKADDR*)&servAddr, sizeof(servAddr)); // 선언된 구조체 소캣을 채운다.( 소캣 주소 할당.)
listen(hServ, 5);//연결요청 대기상태. TCP의 상태를 변경
printf("chage TCP to listening start \n");
clntAdrsize = sizeof(clntAddr);
printf("waiting Client conection try...\n");
hClnt = accept(hServ, (SOCKADDR*)&clntAddr, &clntAdrsize);
printf("connected to client(IP:%s, port : %d) \n", inet_ntoa(clntAddr.sin_addr), ntohs(clntAddr.sin_port));
//어떠한 클라이언트와 연결 성공
//그 클라이언트와 데이터 송.수신...
closesocket(hServ);
WSACleanup();
return 0;
} |
cs |
2.TCP Client 구현
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
32
33
34 |
#include<stdio.h>
#include<WinSock.h>
#pragma comment(lib,"ws2_32.lib")
int main()
{
WSADATA wsaData;
SOCKET hClnt;
SOCKADDR_IN servAddr;
WSAStartup(MAKEWORD(2, 2), &wsaData);
//1.소캣 생성 - TCP설정
hClnt = socket(PF_INET, SOCK_STREAM, 0);
//2. 서버의 주소설정 ip,port
memset(&servAddr, 0, sizeof(servAddr));
servAddr.sin_family = AF_INET;
servAddr.sin_port = htons(9000);
servAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
//3.서버로 TCP연결 요청
connect(hClnt, (SOCKADDR*)&servAddr, sizeof(servAddr));
printf("conected to server... \n");
//4.연결성공
//6.연결해제
closesocket(hClnt);
WSACleanup();
return 0;
}
|
cs |
이러하여 결과는 이렇듯 연결이 되어서 바로 끊어진것을 알 수 가 있었다.
'programing > 네트워크 programing' 카테고리의 다른 글
TCP기반 서버 및 클라이언트(1) (0) | 2017.03.24 |
---|---|
데이터 전송 특성 (0) | 2017.03.21 |
소캣의 이해 (0) | 2017.03.21 |