我编写了一个程序,通过套接字从网络接收一条数据并将其写入文件。我为此目的使用了以下代码:
FILE *log;
log = fopen("time.log", "a");
fprintf(log,"HI all");
while(1)
{
sin_size = sizeof(struct sockaddr_in);
connected = accept(sock, (struct sockaddr *)&client_addr,&sin_size);
printf("\n I got a connection from (%s , %d)", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));
fflush(stdout);
while(1)
{
fflush(stdout);
fgets(send_data,1000,stdin);
send(connected, send_data,strlen(send_data), 0);
bytes_recieved = recv(connected,recv_data,1024,0);
recv_data[bytes_recieved] = '\0';
char newln[2]="\n";
int len=strlen(recv_data), len1=strlen(newln);
fwrite(recv_data, len, 1, log);
fwrite(newln, len1, 1, log);
fflush(stdout);
}
}
fclose(log);
如果文件不存在,fopen 会成功创建文件,但之后什么也没有发生。没有数据写入文件。既不是“HI all”,也不是接收到的数据。是的,正在接收数据,我通过打印接收到的数据来检查它。请帮帮我。提前致谢。运行平台为linux。