【问题标题】:Socket Programming: Receive one complete message with single call套接字编程:单次调用接收一条完整的消息
【发布时间】:2016-04-18 23:21:48
【问题描述】:

我在 PC 中有一个服务器(用 C# 编写),在 PC 中有一个客户端(用 Java 编写),在 android 手机中有一个客户端(与 PC 客户端代码相同)。当我从 PC 客户端向服务器发送消息时,我收到一条带有单个接收()的消息。但是当我从 android 客户端向服务器发送消息时,单个 receive() 最终会包含多个消息。

我正在使用 TCP,我知道它是基于流的协议。但是为什么PC客户端总是一次发送1条消息。以及如何使用 android 客户端来实现它?

【问题讨论】:

  • receive() 是 Java 中的一种 UDP 方法。你的意思是read()?
  • 实际上我的服务器是 C# 和 Java 客户端。所以,我只是用 send() 和 received() 作为我的话,但是协议是 TCP。

标签: java c# android sockets


【解决方案1】:

没有什么可以确保您在单个read() 呼叫中收到完整的消息。 TCP 中没有消息之类的东西。它是一个字节流协议。如果你想要消息,你必须自己实现它们,使用应用程序协议。

【讨论】:

  • 现在我也发送消息的长度。我的 PC 客户端工作正常,接收到由“大小”指示的完整消息。但是安卓客户端还是有问题。它读取的数据比需要的多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
相关资源
最近更新 更多