- 論壇徽章:
- 0
|
目前遇到一個新的問題。服務(wù)端設(shè)計比較簡單,接收8次數(shù)據(jù)之后將套接口關(guān)閉,客戶端部分代碼如下:
int rt;
char a[5000];
fd_set rset, wset;
FD_ZERO(&rset);
FD_ZERO(&wset);
while (1) {
FD_SET(sock, &rset);
FD_SET(sock, &wset);
select(sock + 1, &rset, &wset, NULL, NULL);
if (FD_ISSET(sock, &rset)) {
rt = recv(sock, a, 1000, 0);
if (rt < 0) {
printf("recv error:%s\n", strerror(errno));
}
}
if (FD_ISSET(sock, &wset)) {
rt = write(sock, a, 5000);
if (rt < 0) {
printf("send error:%s\n", strerror(errno));
} else {
printf("send 5000 bytes\n");
}
}
}
客戶端的部分log如下:
1.
send 5000 bytes
send 5000 bytes
send 5000 bytes
send 5000 bytes
send 5000 bytes
send 5000 bytes
catch SIGPIPE
send error:Broken pipe
recv error:Connection reset by peer
2.
send 5000 bytes
send 5000 bytes
send 5000 bytes
send 5000 bytes
send 5000 bytes
send 5000 bytes
recv error:Connection reset by peer
catch SIGPIPE
send error:Broken pipe
請問為什么會出現(xiàn)第一種log,按理說不是應(yīng)該recv先報錯嗎?
謝謝解答! |
|