小编典典

从Java套接字读取数据

java

我有一个侦听某些x端口的套接字。

我可以从客户端应用程序将数据发送到套接字,但是无法从服务器套接字获得任何响应。

  BufferedReader bis = new BufferedReader(new 
  InputStreamReader(clientSocket.getInputStream()));
  String inputLine;
  while ((inputLine = bis.readLine()) != null)
  {
      instr.append(inputLine);    
  }

..此代码部分从服务器读取数据。

但是,直到关闭服务器上的套接字,我才能从服务器读取任何内容。服务器代码不受我控制,无法对其进行编辑。

如何从客户端代码中克服这个问题。

谢谢


阅读 213

收藏
2020-11-16

共1个答案

小编典典

为了在客户端和服务器之间进行通信,必须明确定义协议。

客户端代码将阻塞,直到从服务器收到一行或关闭套接字为止。您说过只有在关闭插座后才能收到东西。因此,这可能意味着服务器不会发送以EOL字符结尾的文本行。readLine()因此,该方法将阻塞,直到在流中找到此类字符或关闭套接字为止。如果服务器不发送行,请不要使用readLine()。使用适合定义的协议的方法(我们不知道)。

2020-11-16