不能为不同的数据类型重用套接字流? (JAVA)

时间:2018-04-08 09:46:23

标签: java sockets tcp client-server

我有一个简单的客户端服务器套接字设置。

  1. 服务器接受客户端连接。
  2. 服务器通过套接字发送对象。
  3. 服务器进行一些计算。
  4. 在同一个套接字上,服务器返回一个布尔值,表明计算是否正确。 (这是线程冻结的地方)
  5. 这样:

    Server.java。

    connectionSocket = serverSocket.accept();
    ObjectOutputStream objectStream = new ObjectOutputStream(connectionSocket.getOutputStream());
    
    // first sends the object
    objectStream.writeObject(testObject);
    
    objectStream.flush(); // i dont really know
    objectStream.reset();
    
    // some code
    
    // returns if the code was succesful
    objectStream.writeBoolean(true);
    

    Client.java

        // initial object sent over the socket
        object  = (TestObject) in.readObject();
        System.out.println(object.toString());
    
        // true if the server test was correct (thread freezes here)
        boolean b  = in.readBoolean();
        System.out.println("Test: " +b);
        clientSocket.close();
    

    这应该首先返回'testObject'将它的数据打印到屏幕然后返回true并将其打印到屏幕上。

    然而,它能够完成第一部分,但是在in.readBoolean()中冻结线程;我知道流持有一个标题,保存有关发送字节的数据,所以我的假设是调用out.reset();或者out.flush();但这些似乎都没有做任何事情。我确定这是一个简单的答案,但我找不到任何我确切问题的例子。

    干杯。

1 个答案:

答案 0 :(得分:0)

咳咳。

在writeBoolean();

之后放置flush