[英]ObjectOutputStream not sending data (server stuck at socket.accept())
我正在尝试使用Java通过连接发送对象。 这是我的客户端代码。 服务器第一次接收到数据,但是第二次停留在socket.accept()上。 我在这里做错什么了吗? 谢谢!
public class Client
{
public static void main(String args[])
{
try
{
Socket socket = new Socket("localhost", 40003);
ClientObject c = new ClientObject(socket);
c.init();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
class ClientObject
{
Socket socket;
public ClientObject(Socket socket)
{
this.socket = socket;
}
public void init()
{
try
{
// computation
SendObject so = new SendObject(toSend1, toSend2, rand, username.length());
// send all of this
OutputStream o = socket.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(o);
oos.writeObject(so);
o.flush();
InputStream i = socket.getInputStream();
ObjectInputStream ois = new ObjectInputStream(i);
// works, data received from the server
so = (SendObject)ois.readObject();
// further computation
so = new SendObject(null, digest, rand + 1, -1);
oos.reset();
oos.writeObject(so);
// doesn't work :(
o.flush();
}
}
两件事情:
accept
,而应继续读取相同连接的流。 当然,您也可以设置一个新的connect( Socket
)并通过该套接字发送第二个对象。 然后,服务器应accept
另一个套接字。 查找我,表明服务器已成功接受连接,否则您将无法发送和接收。 查看您的服务器代码,问题可能是在从客户端收到服务器后关闭了套接字连接。 请提供您的服务器代码以进行查看。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.