본문 바로가기

네트워크 프로그래밍

UDP 경계 에코 클라이언트 구축하기

#include<stdio.h>                                                                                              

#include<stdlib.h>

#include<string.h>

#include<winsock2.h>

#pragma comment(lib,"ws2_32.lib")

 

#define BUFSIZE 30

void ErrorHandling(char *message);

 

int main(int argc, char **argv)                                                                               

{

           WSADATA         wsaData;

           SOCKET hSocket;          

           char message[30];                    

           int strLen,i;

 

           char MSG1[]="Good ";               

           char MSG2[]="Evening ";            

           char MSG3[]="Everybody! ";

 

 

           SOCKADDR_IN servAddr;  

            

           if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)      

                     ErrorHandling("WSAStartup() error!");

           hSocket=socket(PF_INET,SOCK_DGRAM, 0);                      

           if(hSocket == INVALID_SOCKET)             

                                ErrorHandling("socket() error");    

 

           memset(&servAddr, 0, sizeof(servAddr));   

           servAddr.sin_family=AF_INET;

           servAddr.sin_addr.s_addr=inet_addr("127.0.0.1");

           servAddr.sin_port=htons(3000);     

 

           if(connect(hSocket, (struct sockaddr*)&servAddr, sizeof(servAddr))==SOCKET_ERROR)

                     ErrorHandling("connect() error!");

 

          

          

           send(hSocket, MSG1, strlen(MSG1), 0);      

           send(hSocket, MSG2, strlen(MSG2), 0);      

           send(hSocket, MSG3, strlen(MSG3), 0);

 

           for(i=0; i<3; i++){

                     strLen=recv(hSocket, message, sizeof(message)-1, 0);

                     message[strLen]=0;        

                     printf("서버로부터 전송된 %d차 메시지 : %s\n",i, message);

           }         

           closesocket(hSocket);     

           WSACleanup();

           return 0;

}

void ErrorHandling(char *message)

{

           fputs(message, stderr);

           fputc('\n', stderr);

           exit(1);

}