gpt4 book ai didi

java - 客户端未接收服务器通过 Java 中的 ObjectStream 发送的对象

转载 作者:行者123 更新时间:2023-12-01 10:09:02 25 4
gpt4 key购买 nike

我尝试了很长时间来解决这个问题,最后决定寻求专家的帮助。我已经使用套接字编程开发了服务器客户端应用程序,并且我的客户端能够成功连接到服务器。现在我尝试根据客户端的请求通过服务器的套接字发送对象,我的服务器能够捕获该请求,但是服务器发送的响应(writeObject(...))无法到达客户端.

服务器代码片段:

ServerSocket sSocket = new ServerSocket(socketNumber);
ArrayList<LoginPassword> logIn = new ArrayList<>();
Socket cSocket = sSocket.accept();
ObjectOutputStream outputStream = new ObjectOutputStream(cSocket.getOutputStream());
outputStream.flush();
ObjectInputStream inputStream = new ObjectInputStream(cSocket.getInputStream());
LoginPassword lp1 = new LoginPassword("admin","admin");
logIn.add(lp1);
outputStream.writeObject(logIn);
outputStream.flush();

客户代码片段:

Socket client = new Socket(InetAddress.getLocalHost(),socketNumber);
ArrayList<LoginPassword> myList = new ArrayList<>();
ObjectOutputStream outputStream = new ObjectOutputStream(client.getOutputStream());
outputStream.flush();
ObjectInputStream inputStream = new ObjectInputStream(client.getInputStream());
//Wait untill the data is available
myList = (ArrayList<LoginPassword>) inputStream.readObject();

就我而言,客户端 readObject() 永远不会被调用,因为它无法检测服务器发送的数据。请提供任何帮助。

最佳答案

您必须首先创建ObjectOutputStream,最好在两端都创建。否则,您将在创建ObjectInputStream时陷入僵局。

或者,我很想知道以下评论的含义是什么:

// Wait untill the data is available

如果这表明缺少一段调用available()的代码,只需删除它即可。 readObject() 将根据需要阻塞。 available() 的正确用法很少,这不是其中之一。

关于java - 客户端未接收服务器通过 Java 中的 ObjectStream 发送的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36267355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com