Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.net.SocketException:读取字节时重置连接_Java_Sockets_Socketexception - Fatal编程技术网

java.net.SocketException:读取字节时重置连接

java.net.SocketException:读取字节时重置连接,java,sockets,socketexception,Java,Sockets,Socketexception,我正在尝试使用套接字在java中创建一个小型服务器。 套接字已连接,但当我将数据从客户端发送到服务器时,会出现异常 stacktrace(已更新): 完整客户端代码: SocketHints hints = new SocketHints(); hints.keepAlive = true; hints.connectTimeout = 2000; Socket socket; try {

我正在尝试使用套接字在java中创建一个小型服务器。
套接字已连接,但当我将数据从客户端发送到服务器时,会出现异常

stacktrace(已更新):

完整客户端代码:

SocketHints hints = new SocketHints();
        hints.keepAlive = true;
        hints.connectTimeout = 2000;

        Socket socket;
        try
        {
            socket = Gdx.net.newClientSocket(Protocol.TCP, "127.0.0.1", 12346, hints);

            ClientPackage client = new ClientPackage();
            client.setRequestType(RequestType.ping);

            ObjectOutputStream ous = new ObjectOutputStream(socket.getOutputStream());

            ous.writeObject(client);
            ous.flush();

            ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());

            RespondPackage response = (RespondPackage) ois.readObject();
            System.out.println("Respone type = " + response.getRequestType());

        } catch (UnknownHostException e1)
        {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (IOException e1)
        {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (Exception e)
        {

        }

套接字已连接,但错误显示未连接。为了进一步调试,您可以尝试使用一些工具来监视网络数据包。您也可以尝试Wiresharkplease共享服务器代码,可能是您关闭了输出流或输入流,因此关闭流(in | | out)会导致关闭套接字。post更新为完整代码为什么所有ByteArrayInput/OutputStreams?为什么不直接将对象写入套接字?直接从中读出来?为什么是印刷作家?为什么test isConnected()在一个不可能为false的点上?@EJP i更新了我的代码,使其直接写入/读取对象。但我仍然得到连接重置。有什么建议吗?
class doComms implements Runnable
{
    private Socket server;
    PackageHandler packageHandler;
    doComms(Socket server)
    {
        this.server = server;
        packageHandler = new PackageHandler();
    }

    public void run()
    {

        try
        {
            ObjectInputStream ois = new ObjectInputStream(server.getInputStream());     
            ClientPackage clientPack = (ClientPackage) ois.readObject();

            RespondPackage rp = packageHandler.handlePackage(clientPack);

            ObjectOutputStream ous = new ObjectOutputStream(server.getOutputStream());

            ous.writeObject(rp);
            ous.flush();

            server.close();
            System.out.println("Connection was finished and closed.");

        } catch (ClassNotFoundException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException ioe)
        {
            System.out.println("IOException on socket listen: " + ioe);
            ioe.printStackTrace();
        }
    }
}
SocketHints hints = new SocketHints();
        hints.keepAlive = true;
        hints.connectTimeout = 2000;

        Socket socket;
        try
        {
            socket = Gdx.net.newClientSocket(Protocol.TCP, "127.0.0.1", 12346, hints);

            ClientPackage client = new ClientPackage();
            client.setRequestType(RequestType.ping);

            ObjectOutputStream ous = new ObjectOutputStream(socket.getOutputStream());

            ous.writeObject(client);
            ous.flush();

            ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());

            RespondPackage response = (RespondPackage) ois.readObject();
            System.out.println("Respone type = " + response.getRequestType());

        } catch (UnknownHostException e1)
        {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (IOException e1)
        {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (Exception e)
        {

        }