https://www.cnblogs.com/my_life/articles/5363527.html
基础:
其实就是在TCP的那个解决方案里面,加一个SendFile的工程,在工程里面建一个SendFile.cpp的文件,里面放CLient的代码
同时进行修改代码,SendFile代码:
1 #include<iostream> 2 #include<Winsock2.h> 3 4 #include<fstream> 5 6 using namespace std; 7 8 #pragma comment(lib, "ws2_32.lib") 9 10 struct FileHeader 11 { 12 char fileName[MAX_PATH]; 13 int fileSize; 14 }; 15 int main() 16 { 17 18 //第一步 19 WORD wVersionRequested; 20 WSADATA wsaData; 21 int err; 22 23 24 wVersionRequested = MAKEWORD(2, 2); 25 26 err = WSAStartup(wVersionRequested, &wsaData); 27 if (err != 0) { 28 printf("WSAStartup failed with error: %d ", err); 29 return 1; 30 } 31 32 33 34 if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) { 35 36 printf("Could not find a usable version of Winsock.dll "); 37 WSACleanup(); 38 return 1; 39 } 40 else 41 printf("The Winsock 2.2 dll was found okay "); 42 43 //第二步: 44 45 SOCKET sock=socket(AF_INET ,SOCK_STREAM,IPPROTO_TCP ); 46 if(sock==INVALID_SOCKET) 47 { 48 WSACleanup(); 49 return 1; 50 } 51 52 //第三步 53 cout<"请输入服务器IP:"<<endl; 54 char szip[100]={0}; 55 cin>>szip; 56 57 sockaddr_in clientService; 58 InetPton(AF_INET,szip,(void*)&addr.sin_addr.S_un.S_addr);//这是干啥的,我都不知道 59 60 clientService.sin_family = AF_INET; 61 //clientService.sin_addr.s_addr = inet_addr("192.168.3.153"); 62 clientService.sin_port = htons(1234); 63 64 connect(sock,(SOCKADDR *) & clientService, sizeof (clientService)); 65 66 67 //第七步 68 char filePath[MAX_PATH]={0}; 69 char *pfilePath=filePath; 70 //发东西了 71 //文件头-->包含文件名和文件大小(两种数据类型,所以发一个结构体就行了,所以在上面定义一个结构体FileHeader) 72 FileHeader fh; 73 cout<<"请输入要传输的文件:"<<endl; 74 cin>>filePath; 75 //我们要从带有文件名的路径里面获得文件名; 76 while(*pfilePath++!='