Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/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
Try块中的Java不可访问代码_Java_Try Catch_Inputstream_Outputstream - Fatal编程技术网

Try块中的Java不可访问代码

Try块中的Java不可访问代码,java,try-catch,inputstream,outputstream,Java,Try Catch,Inputstream,Outputstream,我正在开发一个与服务器通信的聊天客户端。我最近刚从使用BufferedReaders和PrintWriters改为使用对象流。我很好奇为什么在这段代码中从来没有到达print语句。我尝试了一些方法,似乎在设置流之后无法访问任何代码。我知道客户端已成功连接到服务器,因为我让它打印出连接用户的ip地址。代码如下: try { socket = new Socket (hostName, portNumber); sIn = new ObjectInputStream(socket.g

我正在开发一个与服务器通信的聊天客户端。我最近刚从使用
BufferedReader
s和
PrintWriter
s改为使用对象流。我很好奇为什么在这段代码中从来没有到达print语句。我尝试了一些方法,似乎在设置流之后无法访问任何代码。我知道客户端已成功连接到服务器,因为我让它打印出连接用户的ip地址。代码如下:

try {
    socket = new Socket (hostName, portNumber);
    sIn = new ObjectInputStream(socket.getInputStream());
    sOut = new ObjectOutputStream(socket.getOutputStream());
    while (true) {
        System.out.println("here2");
        String msg = "hi";
        sOut.writeObject(msg);
    }
}

问题是:为什么在这段代码中从未到达print语句。

很可能是
ObjectInputStream
构造函数阻塞

报告说:

“创建从指定的InputStream读取的ObjectInputStream。从流中读取并验证序列化流标头。此构造函数将阻止,直到相应的ObjectOutputStream写入并刷新标头。”

因此,除非服务器端立即打开相应的
ObjectOutputStream
并刷新该流,否则客户端和服务器线程将死锁


最简单的解决方案是,客户机和服务器应在创建其
ObjectInputStream
s之前创建并刷新各自的
ObjectOutputStream
s。

很可能是
ObjectInputStream
构造函数阻塞

报告说:

“创建从指定的InputStream读取的ObjectInputStream。从流中读取并验证序列化流标头。此构造函数将阻止,直到相应的ObjectOutputStream写入并刷新标头。”

因此,除非服务器端立即打开相应的
ObjectOutputStream
并刷新该流,否则客户端和服务器线程将死锁


最简单的解决方案是,客户机和服务器应在创建其
ObjectInputStream
s之前创建并刷新各自的
ObjectOutputStream
s。

很可能是
ObjectInputStream
构造函数阻塞

报告说:

“创建从指定的InputStream读取的ObjectInputStream。从流中读取并验证序列化流标头。此构造函数将阻止,直到相应的ObjectOutputStream写入并刷新标头。”

因此,除非服务器端立即打开相应的
ObjectOutputStream
并刷新该流,否则客户端和服务器线程将死锁


最简单的解决方案是,客户机和服务器应在创建其
ObjectInputStream
s之前创建并刷新各自的
ObjectOutputStream
s。

很可能是
ObjectInputStream
构造函数阻塞

报告说:

“创建从指定的InputStream读取的ObjectInputStream。从流中读取并验证序列化流标头。此构造函数将阻止,直到相应的ObjectOutputStream写入并刷新标头。”

因此,除非服务器端立即打开相应的
ObjectOutputStream
并刷新该流,否则客户端和服务器线程将死锁


最简单的解决方案是,客户机和服务器应该在创建其
ObjectInputStream
s之前创建并刷新各自的
ObjectOutputStream
s。

几乎可以确定您的问题所在。ObjectInputStream将等待来自连接/inputStream另一端的头。它将“挂起”,直到收到为止

几乎可以肯定你的问题是什么。ObjectInputStream将等待来自连接/inputStream另一端的头。它将“挂起”,直到收到为止

几乎可以肯定你的问题是什么。ObjectInputStream将等待来自连接/inputStream另一端的头。它将“挂起”,直到收到为止

几乎可以肯定你的问题是什么。ObjectInputStream将等待来自连接/inputStream另一端的头。它将“挂起”,直到收到为止

您是否已使用调试器逐步完成了代码?它挂在哪里?另外,您确认没有引发异常吗?问题出在服务器端。我让它先创建in连接,然后再创建out连接。不管怎样,谢谢你的帮助。你有没有用调试器检查过代码?它挂在哪里?另外,您确认没有引发异常吗?问题出在服务器端。我让它先创建in连接,然后再创建out连接。不管怎样,谢谢你的帮助。你有没有用调试器检查过代码?它挂在哪里?另外,您确认没有引发异常吗?问题出在服务器端。我让它先创建in连接,然后再创建out连接。不管怎样,谢谢你的帮助。你有没有用调试器检查过代码?它挂在哪里?另外,您确认没有引发异常吗?问题出在服务器端。我让它先创建in连接,然后再创建out连接。无论如何谢谢你的帮助。