【问题标题】:Java TCP socket listenerJava TCP 套接字侦听器
【发布时间】:2016-12-24 07:18:54
【问题描述】:

我有非常简单的 TCP 套接字侦听器。我想在字符为null# 时停止接收数据。

while ((line = in.readLine()) != null && !line.equals("#")){
    tcpData = tcpData + line;
    }
server.close();

没有在代码流动时关闭套接字。仅当我从超级终端关闭时,套接字才关闭。我错过了什么?

【问题讨论】:

  • 1. “#”是服务器发送的吗? 2. 服务器是否结束了那条线? 3、服务器是否关闭连接?
  • 不要使用readLine,除非你想读
  • 我可以用什么代替 readline ?
  • 您考虑过查阅 Javadoc 吗?还有其他三种读取方法。

标签: java tcp


【解决方案1】:

因为readLine() 仅在流结束时返回 null,这仅在对等方关闭连接时发生在 TCP 套接字中。

...显然,您永远不会发送由# 加上行终止符组成的行。

【讨论】:

  • 远程终端发送传感器数据。例如字符串 $353323058181636,EV,D,T,567888.9,+12C,FFFFE000# 其中 $ 是开始字符,# 是数据结束字符。每个数据包每分钟都来。在我的情况下,当数据结束套接字需要关闭套接字。
  • 所以你正在阅读线路,但它不是发送线路。所以不要使用readLine()
最近更新 更多