Java 套接字 BufferedReader 为空
Java Socket BufferedReader Null
public static void main(String[] args) throws IOException {
String hostName = "127.0.0.1";
int portNumber = 4848;
Socket echoSocket = new Socket(hostName, portNumber);
PrintWriter out = new PrintWriter(echoSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String userInput;
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
System.out.println("echo: " + in.readLine());
}
}
它应该通过将它发送到套接字并再次从套接字获取它来回显你写的内容。发生的事情是,当我输入内容并按回车键时,大约需要 10 秒,然后显示 echo: null
。
预计
输入
Test
输出
echo: Test
现实
输入
Test
输出
echo: null
我的问题是:
- 我犯了什么菜鸟错误?
我该如何解决?
评论前先阅读
我需要测试套接字的功能。通过做这样简单的事情,它可以帮助我理解如何使用它们。我想创建一个实时聊天服务器。但是,如果这个简单的程序不起作用,我就不能。我还没有笨到不使用 userInput。我知道。
问题是我在同一个 Thread
上访问 echoSocket
的 InputStream
和 OutputStream
。
public static void main(String[] args) throws IOException {
String hostName = "127.0.0.1";
int portNumber = 4848;
Socket echoSocket = new Socket(hostName, portNumber);
PrintWriter out = new PrintWriter(echoSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String userInput;
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
System.out.println("echo: " + in.readLine());
}
}
它应该通过将它发送到套接字并再次从套接字获取它来回显你写的内容。发生的事情是,当我输入内容并按回车键时,大约需要 10 秒,然后显示 echo: null
。
预计
输入
Test
输出
echo: Test
现实
输入
Test
输出
echo: null
我的问题是:
- 我犯了什么菜鸟错误?
我该如何解决?
评论前先阅读
我需要测试套接字的功能。通过做这样简单的事情,它可以帮助我理解如何使用它们。我想创建一个实时聊天服务器。但是,如果这个简单的程序不起作用,我就不能。我还没有笨到不使用 userInput。我知道。
问题是我在同一个 Thread
上访问 echoSocket
的 InputStream
和 OutputStream
。