본문 바로가기
TCP/IP/윈도우기반

UDP 경계 에코 클라이언트 <윈도우기반>

by 꿀꿀이냐옹이 2009. 6. 30.
반응형

#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);

}


반응형

댓글