java - 如何检查 readUTF 方法是否有某些值可以接收

标签 java sockets

我正在用java实现一个服务器客户端应用程序。 情况是客户端向服务器发送一些消息,服务器可能会也可能不会响应(发回一些消息)。

<小时/>

看看这个

is = new DataInputStream(client.getInputStream());

现在我正在使用 is.readUTF(); 方法来获取消息。

问题是 readUTF 是一个阻塞调用,它会立即停止程序以接收消息。 正如我所说,服务器可能会或可能不会响应,我需要一种方法来阻止 readUTF 方法停止程序(检查是否有消息)并在没有收到消息时继续继续。

最佳答案

使用DataInputStream.available()检查是否有数据要读取,并使用PushbackInputStream包装套接字的InputSteam,如here所述.

关于java - 如何检查 readUTF 方法是否有某些值可以接收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39853760/

相关文章:

java - 在不使用 @JsonTypeInfo 的情况下使用 Jackson 反序列化为多态集合

java - EJB 2.1 实体 bean 与 EJB 3.0 实体 bean

java - 为什么不尝试 I/O 就不可能检测到 TCP 套接字已被对等方优雅地关闭?

c# - 编写TcpClient client = list.AcceptTcpClient();后程序无法打开。

c++ - 在 io_service 运行后创建套接字

java - 数组列表的数组列表

java - org.hibernate.InstantiationException : Cannot instantiate abstract class or interface: device. 处置

Java 说这个方法有一个构造函数名称

c++ - cpp 中的 boost.asio 服务器-客户端程序

node.js 为机器人聊天创建 'server side socket' (聊天脚本)