gpt4 book ai didi

java - 无法使用 C 在客户端读取消息

转载 作者:太空宇宙 更新时间:2023-11-03 23:53:21 25 4
gpt4 key购买 nike

我使用 Protocol Buffer 制作数据结构,在服务器端我编写以下代码使用 Java 发送消息,而在客户端使用 C 接收消息。

Java 服务器:

OutputStream os = socket.getOutputStream();
GameResponse.Builder builder=GameResponse.newBuilder();
builder.build().writeTo(os);
os.flush();
os.close();

C 客户端:

while ((n = ::recv(sockfd, buf, BUFFLEN, 0)) > 0) {
write(STDOUT_FILENO, buf, n);
len += n;
}

原来从服务器发送的消息是正确的,但无法在客户端接收到。看起来 while 循环永远不会中断它进入死循环。我们认为这可能是 C recv 函数从未得到 EOF 来结束数据传输的原因......

最佳答案

如果连接已关闭,

recv() 返回 0

要从客户端关闭连接,请通过调用 socket.close() 关闭套接字。

关于java - 无法使用 C 在客户端读取消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14352023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com