【发布时间】:2020-05-08 21:06:36
【问题描述】:
我需要对 c++(或 c)中的套接字错误处理有所了解。 我正在测试一个简单的客户端和服务器程序,如下所示:
.....
while (1) { // server keeps sending strings to client
sprintf(jsonStr, "{ \"%d: Hello\": \"world!\" } \n", index++);
size = send(newsockfd, jsonStr, strlen(jsonStr), 0);
if (size == -1) {
error("ERROR on send");
}
sleep(1);
}
.....
当客户端从服务器接收字符串时,如果我杀死客户端,服务器也会退出而没有任何消息。 这是预期的吗?我怎样才能抓住它而不是退出?我尝试了“尝试”和“捕捉”,但无法捕捉。 使用 java,我使用 DataOutputStream.writeUTF() 得到“Broken pipe”SocketException。 我在 Mac 和 Linux 上测试过,结果是一样的。
我使用的示例代码来自:https://www.bogotobogo.com/cplusplus/sockets_server_client.php
提前致谢。
【问题讨论】: