본문 바로가기
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 hServSock; 

      char message[BUFSIZE];

      int strLen,num=0;

 

      SOCKADDR_IN servAddr; 

      SOCKADDR_IN clntAddr; 

      int clntAddrSize; 

 

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

                 ErrorHandling("WSAStartup() error!");

                 hServSock=socket(PF_INET, SOCK_DGRAM, 0);

     

      if(hServSock ==  INVALID_SOCKET) 

                 ErrorHandling("socket() error!");   

                

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

                 servAddr.sin_family=AF_INET;

                 servAddr.sin_addr.s_addr=htonl(INADDR_ANY); 

                 servAddr.sin_port=htons(3000); 

     

      if(bind(hServSock, (SOCKADDR*) &servAddr, sizeof(servAddr))==SOCKET_ERROR)

                 ErrorHandling("bind() error");

 

      while(1)

                 {

                                      clntAddrSize=sizeof(clntAddr);

                                      strLen = recvfrom(hServSock, message, BUFSIZE, 0, (SOCKADDR*)&clntAddr, &clntAddrSize); 

                                      printf("수신번호 : %d\n",num++);

                                      sendto(hServSock, message, strLen, 0, (SOCKADDR*)&clntAddr, sizeof(clntAddr));

                 }

      WSACleanup();

 return 0;

}

 

void ErrorHandling(char *message)

{

      fputs(message, stderr);

      fputc('\n', stderr);

      exit(1);

}
반응형

댓글