如何使用套接字c / C ++在块中发送文件?

我一直在试图find如何发送一个文件在C或C ++块我看了一些例子在这里没有find好的例子。 我对C / C ++编程非常新颖

http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html

任何想法如何我需要在客户端和服务器之间的块发送文件? 客户端请求文件,服务器发回它。

我发现这个发送,但不知道接收它。

#include <sys/types.h> #include <sys/socket.h> int sendall(int s, char *buf, int *len) { int total = 0; // how many bytes we've sent int bytesleft = *len; // how many we have left to send int n; while(total < *len) { n = send(s, buf+total, bytesleft, 0); if (n == -1) { break; } total += n; bytesleft -= n; } *len = total; // return number actually sent here return n==-1?-1:0; // return -1 on failure, 0 on success } 

我只是写了这个代码接收文件在Client using linux sockets in C

 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/types.h> #include <netinet/in.h> #include <sys/socket.h> #include <sys/stat.h> #include <fcntl.h> #define PORT 4118 #define MaxBufferLength 1024 // set the size of data you want to recieve from server int main() { int sockFd, bytesRead= 1, bytesSent; char buffer[MaxBufferLength]; struct sockaddr_in server, client; server.sin_port= htons(PORT); server.sin_family = AF_INET; server.sin_addr.s_addr = inet_addr("127.0.0.1"); sockFd = socket(AF_INET, SOCK_STREAM, 0); if(sockFd < 0) printf("Unable to open socket\n"); int connectionSocket = connect(sockFd, (struct sockaddr *) &server, sizeof(struct sockaddr) ); if(connectionSocket < 0) perror("connection not established\n"); int fd = open("helloworlds.txt",O_CREAT | O_WRONLY,S_IRUSR | S_IWUSR); if(fd == -1) perror("couldn't openf iel"); while(bytesRead > 0) { bytesRead = recv(sockFd, buffer, MaxBufferLength, 0); if(bytesRead == 0) { break; } printf("bytes read %d\n", bytesRead); printf("receivnig data\n"); bytesSent = write(fd, buffer, bytesRead); printf("bytes written %d\n", bytesSent); if(bytesSent < 0) perror("Failed to send a message"); } close(fd); close(sockFd); return 0; } 

希望这可以帮助

看看TCP_CORK(man 7 tcp)。 但是,真的,除了你想成为一个插座/网络编程专家,使用一个库! 只要想一想你的下一个问题:数据加密(例如HTTPS / SSL)。 图书馆关心血淋淋的细节