연결이 되었다가 바로 끊어지는 소캣프로그래밍으로 구현을 해보도록 했다.

 

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(22), &wsaDate);//소캣 라이브러리 장착
                                         //소캣 생성
    hServ = socket(PF_INET, SOCK_STREAM, 0); // TCP를 사용하는 소캣생성
                                             //주소설정
    SOCKADDR_IN servAddr, clntAddr;//소캣 구조체 선언
    int clntAdrsize;
    memset(&servAddr, 0sizeof(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(22), &wsaData);
 
    //1.소캣 생성 - TCP설정
    hClnt = socket(PF_INET, SOCK_STREAM, 0);
 
    //2. 서버의 주소설정 ip,port
    memset(&servAddr, 0sizeof(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

+ Recent posts

티스토리 친구하기