/************************************************************************
helloworld_client_win.c
Written by SW.Yoon
참고 : TCP/IP 소켓 프로그래밍 / 윤성우 | 저
- 컴파일전 반드시 ws2_32.lib 라이브러리를 링크시켜야 한다.
- argument 값으로 <IP> <PORT> 를 넘겨줘야 한다.
************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<winsock2.h>
void ErrorHandling(char* message);
int main(int argc , char ** argv)
{
WSADATA wsaData;
SOCKET hSocket;
char message[30];
int strLen;
SOCKADDR_IN servAddr;
if(argc != 3)
{
printf("Usage : %s <IP> <port> \n" , argv[0]);
exit(1);
}
//Load WinSocket 2.2 DLL
if(WSAStartup(MAKEWORD(2,2) , &wsaData) != 0)
ErrorHandling("WSAStartup() error!");
//서버 접속을 위한 소켓 생성
hSocket = socket(PF_INET , SOCK_STREAM, 0);
if(hSocket == INVALID_SOCKET)
ErrorHandling("hSocketet() error!");
memset(&servAddr , 0 , sizeof(servAddr));
servAddr.sin_family = AF_INET;
servAddr.sin_addr.s_addr= inet_addr(argv[1]);
servAddr.sin_port = htons(atoi(argv[2]));
//서버로 연결 요청
if( connect(hSocket , (SOCKADDR*)&servAddr , sizeof(servAddr))
== SOCKET_ERROR )
ErrorHandling("connect() error!");
//데이터 수신
strLen = recv(hSocket , message , sizeof(message)-1 , 0);
if(strLen==-1)
ErrorHandling("read() error!");
message[strLen]=0;
printf("Message from server : %s\n" , message);
//연결 종료
closesocket(hSocket);
WSACleanup();
return 0;
}
void ErrorHandling(char* message)
{
fputs(message , stderr);
fputc('\n' , stderr);
exit(1);
}