gpt4 book ai didi

java - getInputStream block ?

转载 作者:行者123 更新时间:2023-12-04 21:28:27 24 4
gpt4 key购买 nike

使用输入/输出流在我的客户端和服务器之间传递对象。我可以用我的服务器发送和接收对象,现在我希望客户端也能发送,现在只能发送。所以我给了我的客户一个 ObjectInputStream。但是,当我初始化它时,它会阻塞!一直在四处寻找并找到了答案,但没有找到解决方案。

请帮忙!

public GameConnection(String strPort, TextArea chat)
{
this.port = Integer.parseInt(strPort);
System.out.println("GameConnection::Constructor(): Connecting on port " + port);
this.chat = chat;


connect = new Connection();
sendObject();
}
public void sendObject()
{
try
{
obj_stream.writeObject(new String("GameServer received a message!"));
}
catch(Exception e){System.out.println("GameConnection::sendObject(): " + e);}
}

protected class Connection extends Thread
{
private boolean alive = true;

public Connection()
{
try
{
socket = new Socket(host, port);
System.out.println("Connected to GAMESERVER" + host + " on port + " + port);
obj_stream = new ObjectOutputStream(socket.getOutputStream());
// Next line BLOCKS!!!
//ObjectInputStream stream = new ObjectInputStream(socket.getInputStream());
}
catch (IOException ioe)
{
System.out.println("Connection::constructor() " + ioe);
Terminate();
}
catch (NullPointerException npe)
{
System.out.println("Connection::constructor() " + npe);;
Terminate();
}

}

我尝试在不同的线程中使用它们,但它有同样的问题,至少对我来说 :(

最佳答案

是的,这个问题已经被问过很多次了。对象流格式有一个 header ,ObjectInputStream 在构造时读取该 header 。因此,它一直处于阻塞状态,直到它通过套接字接收到该 header 为止。假设您的客户端/服务器代码看起来相似,在构造 ObjectOutputStream 之后,刷新它。这将强制通过网络传输 header 数据。

关于java - getInputStream block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8088557/

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