-1
n
的值來到9,sockfd = 3
,並且因爲它調用了讀取功能,所以它不是來自讀取功能。印刷讀取開始行後,它停在那裏只有:閱讀功能沒有返回任何值
while(1)
{
if (n < 0)
{
printf("ERROR writing to socket");
}
else if(n == 0)
{
printf("Nothing");
}
printf(" read start n=%d\n ,sockfd = %d\n",n,sockfd);
n = read(sockfd,buffer,1024);
if (n < 0)
{ error("ERROR reading from socket");
}
printf("Reply= %s",buffer);
write_buf_to_file("/root/abc_regr/receive.txt",buffer);
}
return;
你確定有數據在等嗎?嘗試使用'recv()'而不是'read()'並傳遞'flags = MSG_DONTWAIT'來獲得非阻塞接收。然後,如果沒有可供讀取的數據,它將立即返回。 –
這是令人毛骨悚然的代碼格式。在寫入任何內容之前(在代碼之前的'n'測試爲'read',什麼時候是'read'',而不是'write',是否設置'n'),檢測寫入錯誤似乎也很奇怪。 。 –
「n的值爲9,sockfd = 3,當它調用讀取函數時,它不會從讀取函數」什麼? – Lundin