【发布时间】:2012-09-20 13:41:17
【问题描述】:
我正在尝试将文件从客户端流式传输到服务器,但是从 FILE 到 char 的数据类型不兼容,因此每次运行客户端时都会出现分段错误。我不知道如何解决这个问题。附件是服务器和客户端的代码,下面是客户端的问题。我正在尝试从客户端读取文件到缓冲区将其发送到服务器,服务器将从缓冲区读取文件并将其写入文件。 客户端http://pastebin.com/QtLbMgP3
服务器端http://pastebin.com/8PNchBUZ
// n = write(sock,"send me your message",18);
printf("Please enter the message: ");
bzero(buffer,256);
fgets(buffer,255,stdin);
ptr_myfile=fopen("test2.txt","w");
for(counter=1;counter <=10;counter++){
fwrite(&ptr_myfile,sizeof(*buffer),1,buffer);
n = read(sockfd,buffer,255);
n = write(sockfd,buffer,18);
n = write(sockfd,buffer,strlen(buffer));
if (n < 0) error("ERROR writing to socket");
bzero(buffer,256);
n = read(sockfd,buffer,255);
if (n < 0) error("ERROR reading from socket");
// printf("%s\n",buffer);
};//close for loop
close(sockfd);
}// close event loop
return 0;
}// close main function
【问题讨论】:
-
请学会以正统的方式缩进你的代码。我修复了最糟糕的部分,但仍有很大的改进空间。此外,在标记为
};//close for loop的行中,分号是多余的;它在循环体之后立即创建一个空语句。不要忘记检查fopen()是否有效;众所周知,文件不存在或没有正确的权限。