본문 바로가기

네트워크 프로그래밍

TCP/IP 파일 입출력 클라이언트 프로그래밍!

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

 FILE* fp;

 SOCKADDR_IN servAddr;

 int len;

 

 fp = fopen("receive.dat", "w");

 if(fp==NULL)

  ErrorHandling("File open error");

 

 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(3000);

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

  ErrorHandling("connect() error!");

 

 while((len=recv(hSocket, buf, BUFSIZE, 0))!=0)

 {

  fwrite(buf,sizeof(char),len,fp);

 }

 

 send(hSocket, "Thank you\n", 10, 0);

 

 fclose(fp);

 closesocket(hSocket);

 WSACleanup();

 return 0;

}

 

void ErrorHandling(char *message)

{

 fputs(message, stderr);

 fputc('\n',stderr);

 exit(1);

}