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

UDP connect 함수 기반의 에코 클라이언트<윈도우 기반>

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[BUFSIZE];

            int strLen;

 

            SOCKADDR_IN servAddr;

 

 

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

                       ErrorHandling("WSAStartup() error!");

 

            hSocket=socket(PF_INET,SOCK_STREAM,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(4000);

 

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

                       ErrorHandling("connect() error!");

 

            while(1)

            {                  

                     fputs("전송할 메시지를 입력하세요(q to quit) : ", stdout);

                     fgets(message, BUFSIZE, stdin); fflush(stdin);

                     if(!strcmp(message,"q\n")) break;

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

 

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

                     message[strLen]=0;

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

                      

            }

            closesocket(hSocket);

            WSACleanup();

            return 0;

}

void ErrorHandling(char *message)

{

            fputs(message, stderr);

            fputc('\n', stderr);

            exit(1);

}

 


반응형

댓글