【发布时间】:2011-11-22 14:24:52
【问题描述】:
在使用 Java 套接字时遇到了一些恼人的问题,我的应用程序似乎在非常基本的层面上失败了。我的应用程序的一部分需要通过 TCP 连接编写文件名。接收端代码如下:
ServerSocket serverSocket = new ServerSocket(4445);
Socket socket = serverSocket.accept();
BufferedReader reader = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
String filename = reader.readLine();
而我的发件人代码如下:
Socket socket = new Socket(InetAddress.getLocalHost(), 4445);
PrintWriter writer = new PrintWriter(socket.getOutputStream());
writer.write("Test.jpg");
这里有非常非常基本的东西,但由于某种原因,我得到一个 SocketException: Connection Reset 当我运行它时?这是完整的堆栈跟踪:
Exception in thread "main" java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at java.io.BufferedReader.fill(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at FileReceiver.main(FileReceiver.java:11)
FileReceiver.java:11 行是进行reader.readLine() 调用的行。我这辈子都不知道出了什么问题,过去 TCP 套接字的类似基本使用一直对我有用,为什么现在会发生这种情况?
【问题讨论】: