================================ Outline ====================================
Echo Server
Echo Client(진행 중)
----------------------------------------------------------------------------
Echo Server
listen 함수 인자에 소켓 번호와 backlog(동시 접속자 대기수)를 지정해 준다.
accept 함수 인자에 소켓 번호와 사용자의 접속 정보를 담을 구조체, 그리고 그 구조체의 크기를 넣어준다.
accept함수는 scanf처럼 입력 값이 있을 때까지 프로그램의 흐름을 멈추게 한다.
accept함수까지 완성한 후에 실행시켜보자. accept함수를 통과했는지 확인하기 위해 printf를 사용하여 'Incoming Client'라는 문자열을 넣어주자.
프로그램을 실행 시킨 후 도스 커맨트 창을 띄워서 'telnet_IP_PORT#'를 넣어주면 프로그램이 accept함수를 수행하고 다음 단계로 넘어갔음을 알 수 있다.
client가 접속하여 accept가 되면 접속한 client의 IP와 PORT번호를 출력하고 입력하는 값이 그대로 다시 전송되게 하는 echo server를 만들어보자.
/*** 소스 ***/
#include "smartsock.h" |
echo: telnet에서 읽어들인 문자를 다시 전송한다.
Echo Client
Server의 코딩을 참조하여 socket생성, sockaddr_in 구조체 세팅, connect 함수를 만들어보자.
/*** 소스 ***/
#include "smart_socket.h"
int main(void)
{
struct sockaddr_in sockAddr;
int iSock;
int iRet;
iSock = socket(AF_INET, SOCK_STREAM, 0);
if(0 > iSock)
{
perror("socket : ");
return -1;
}
bzero(&stAddr, sizeof(stAddr));
stAddr.sin_family = AF_INET;
stAddr.sin_addr.s_addr = inet_addr(IP);
stAddr.sin_port = htons((PORT));
iRet = connect(iSock, (struct sockaddr *)&stAddr, &uiSockLen);
if(0 > iRet)
{
perror("connect : ");
return -2;
}
return 0;
}
'Busan IT > 공장내 Network' 카테고리의 다른 글
TCP 추출(진행중) (0) | 2015.07.16 |
---|---|
Echo Server/Client (0) | 2015.07.15 |
Server/Client socket 프로그램 만들기 (0) | 2015.07.13 |
소켓 연결 (0) | 2015.07.07 |
네트워크 연결 (0) | 2015.07.06 |