【问题标题】:easy tcp socket no receive简单的 tcp 套接字没有接收
【发布时间】:2013-06-01 17:59:13
【问题描述】:

好的,我想与 python 脚本通信以发送数据并接收答案,但我的脚本不起作用。代码如下:

Socket socket = new Socket("192.168.178.25",5005);
DataOutputStream DOS = new DataOutputStream(socket.getOutputStream());
DataInputStream DIS = new DataInputStream(socket.getInputStream());
DOS.writeUTF("Dies ist ein Test");
String text = DIS.readUTF().toString();
Toast.makeText(getApplicationContext(), text, 0).show();socket.close();

发送文本没问题...但我无法接收数据。

【问题讨论】:

  • 我对您的问题投了反对票,因为它缺少细节:您能告诉我们您的脚本到底有什么不适合的吗? (编译错误?意外行为?)
  • @halflings 我投了你的反对票,因为这个问题已经包含了足够的细节来回答。

标签: android sockets tcp


【解决方案1】:

writeUTF() 和 readUTF() 不能“与 Python 脚本通信”:只能彼此通信。请参阅 Javadoc。

您可能需要读取和写入行。

【讨论】:

  • 在 python 中处理这种格式可能很棘手,这可能是一个糟糕的选择,但它不限于 java。是的,在你的对比想法中,行尾终止的字符序列很常见。
  • @ChrisStratton 这将非常“棘手”。您不仅要实现 16 位长度的字,还要实现 Javadoc 中描述的“修改的 UTF-8”编码。出于所有实际目的,它仅适用于 Java。
  • 不,修改非常简单。用任何语言处理这样的数据应该不难——唯一棘手的事情是意识到如果这样做的功能还不存在,您需要手动完成。实际上,任何没有可用于消息成帧的带外信令的通信方案都需要某种代码技巧才能做到这一点。行方向仅意味着在消息中禁止换行,或者必须建立一种机制来转义任何消息中间的换行。
猜你喜欢
  • 1970-01-01
  • 2021-01-14
  • 2013-03-13
  • 2016-05-26
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 2012-12-28
  • 2018-11-07
相关资源
最近更新 更多