首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >客户端使用C读取消息失败

客户端使用C读取消息失败
EN

Stack Overflow用户
提问于 2013-01-16 13:39:49
回答 1查看 169关注 0票数 2

我使用协议缓冲区来构建数据结构,在服务器端,我使用Java编写以下代码来发送消息,而在客户端,我使用C语言接收消息。

Java服务器:

代码语言:javascript
复制
OutputStream os = socket.getOutputStream();
GameResponse.Builder builder=GameResponse.newBuilder();
builder.build().writeTo(os);
os.flush();
os.close();

C客户端:

代码语言:javascript
复制
while ((n = ::recv(sockfd, buf, BUFFLEN, 0)) > 0) {
    write(STDOUT_FILENO, buf, n);
    len += n;
}

事实证明,从服务器发送的消息是正确的,但无法在客户端接收。看起来while循环没有中断,它进入了死循环。我们认为这可能是C recv函数从未获得EOF来结束数据传输的原因……

EN

回答 1

Stack Overflow用户

发布于 2013-01-16 15:02:30

如果连接已关闭,则recv()返回0

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14352023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档