ネットワークからソケットを介してデータを受け取り、それをファイルに書き留めるプログラムを作成しました。私はその目的のために次のコードを使用しました:
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はファイルを正常に作成しますが、その後は何も起こりません。ファイルにデータは書き込まれません。「HIall」も受信データもありません。はい、データを受信しています。受信したデータを印刷して確認しました。私を助けてください。前もって感謝します。オペレーティングプラットフォームはLinuxです。