我正在与C中的套接字进行客户端/服务器交互。我要做的是让客户端请求在服务器上读取文件,服务器返回文件内容的缓冲区,客户端打印出来文件。
虽然我能够完成服务器向客户端发送文件缓冲区并且客户端成功打印出来,但我似乎无法让服务器成功读取客户端发送的文件名。
这就是我的意思:
///This is the structure of the message that gets sent back and forth struct message { int code; //Just indicates 1 or 2 for readfile or writefile int size; char buffer[256]; //This will hold the filename when client sends readfile request };
作品:
char *filename = "test.c"; infile = open(filename, O_RDONLY); //Send the file and everything back to the client
不起作用:
while( read(sockfd, &msg, sizeof(int) * 2) > 0) { if(msg.code == 1) { //Perform a read operation int infile, filesize, rr; int length; char output[256]; size_t rb = 0; while(rb < msg.size) { ssize_t r = read(sockfd, msg.buffer, msg.size - rb); if(r < 0) { error(sockfd, r, msg.buffer); break; } rb += r; } msg.buffer[rb] = '