繁体   English   中英

ObjectOutputStream不发送数据(服务器卡在socket.accept()上)

[英]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();

                    }
                    }

两件事情:

  1. 刷新ObjectOutputStream而不是基础OutputStream。
  2. 客户端使用相同的流并因此使用相同的连接写入服务器,因此服务器不应期望第二次accept ,而应继续读取相同连接的流。 当然,您也可以设置一个新的connect( Socket )并通过该套接字发送第二个对象。 然后,服务器应accept另一个套接字。

查找我,表明服务器已成功接受连接,否则您将无法发送和接收。 查看您的服务器代码,问题可能是在从客户端收到服务器后关闭了套接字连接。 请提供您的服务器代码以进行查看。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM