tcp文件发送和接收-server端/windows

来源:互联网 发布:淘宝图片设计软件 编辑:程序博客网 时间:2024/06/05 19:15
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<winsock2.h>#define BUF_SIZE 30/* run this program using the console pauser or add your own getch, system("pause") or input loop */void ErrorHandling(char *message);int calculate(int opnum,int opnds[],char oprator);int main(int argc, char *argv[]) {char PORT[] = "9190";//端口 WSADATA wsaData;SOCKET hServSock,hClntSock;char message[BUF_SIZE];char buf[BUF_SIZE];FILE * fp;int readCnt;SOCKADDR_IN servAdr, clntAdr;int clntAdrSize;if (WSAStartup(MAKEWORD(2,2),&wsaData) != 0) {ErrorHandling("WSAStartup() error!");}fp = fopen("test.jpg","rb");hServSock = socket(PF_INET,SOCK_STREAM,0);if (hServSock == INVALID_SOCKET) {ErrorHandling("socket() error!");}memset(&servAdr,0,sizeof(servAdr));servAdr.sin_family = AF_INET;servAdr.sin_addr.s_addr = htonl(INADDR_ANY);servAdr.sin_port = htons(atoi(PORT));if (bind(hServSock,(SOCKADDR*)&servAdr,sizeof(servAdr)) == SOCKET_ERROR){ErrorHandling("BIND() error!");}if (listen(hServSock,5) == SOCKET_ERROR) {ErrorHandling("listen() error!");}printf("Listen....\n");clntAdrSize = sizeof(clntAdr);hClntSock = accept(hServSock,(SOCKADDR*)&clntAdr,&clntAdrSize);printf("haveConnected....\n");while(1) {readCnt = fread((void*)buf,1,BUF_SIZE,fp);if (readCnt < BUF_SIZE) {send(hClntSock,(char*)&buf,readCnt,0);break;}send(hClntSock,(char*)&buf,BUF_SIZE,0);}shutdown(hClntSock,SD_SEND); //断开输出流 recv(hClntSock,(char*)buf,BUF_SIZE,0);printf("Message from client:%s \n",buf);fclose(fp);closesocket(hServSock);closesocket(hServSock);WSACleanup();return 0 ;}void ErrorHandling(char *message) {fputs(message,stderr);fputc('\n',stderr);exit(1);}

0 0
原创粉丝点击