“线程中的异常”;“主要”;java.net.SocketException:连接重置

“线程中的异常”;“主要”;java.net.SocketException:连接重置,java,sockets,tcp,ioexception,Java,Sockets,Tcp,Ioexception,Server.java public class Server { public static BufferedReader inFromClient = null; public static DataOutputStream outToClient = null; public static Socket connectionSocket = null; static ServerSocket welcomeSocket = null; static

Server.java

public class Server {
    public static BufferedReader inFromClient = null;
    public static DataOutputStream outToClient = null;
    public static Socket connectionSocket = null;
    static ServerSocket welcomeSocket = null;
    static String path = null;

    public static void main(String[] args) throws IOException {
        welcomeSocket = new ServerSocket(1001);

        FileInputStream fin = null;
        FileOutputStream fout = null;

        while (true) {

            connectionSocket = welcomeSocket.accept();

            inFromClient = new BufferedReader(new InputStreamReader(
                    connectionSocket.getInputStream()));

            outToClient = new DataOutputStream(
                    connectionSocket.getOutputStream());
            path = inFromClient.readLine();

            if (path != null) {
                String fileName = new File(path).getName();

                File file = new File(path);
                File file2 = new File(fileName);

                fin = new FileInputStream(file);

                fout = new FileOutputStream(file2);

                byte[] buffer = new byte[1024];
                int bytesRead;
                while ((bytesRead = fin.read(buffer)) > 0) {
                    fout.write(buffer, 0, bytesRead);
                }

                fin.close();
                fout.close();
            }

        }
    }
}
我犯了这个错误

Exception in thread "main" java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(Unknown Source)
    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 Server.main(Server.java:37)
这就是我想做的

在我运行Server.java之后,然后运行Client.java。我试着按下选择按钮,但没有选择任何文件,然后关闭文件选择器

我的理解是这条线

  path = inFromClient.readLine();
当它试图读取行,但没有找到任何东西,这就是为什么它说未知源,但我如何解决这个问题

在我的
Client.java
中,我试图
close()
套接字,但它根本没有关闭

更新我已经通过将try&catch放在发生错误的server.java上修复了错误,这修复了问题

当它试图读取,但没有找到任何东西,这就是为什么它说未知来源

不,不是。这是指相关的源代码没有使用调试信息编译,因此在打印堆栈跟踪时,源行号和文件不可用

对这种情况最常见的解释是,您已写入已被对等方关闭的连接:换句话说,是应用程序协议错误


为什么要编写一个服务器,其功能是根据客户端的输入将文件从一个位置复制到另一个位置?

try/catch
无法修复任何问题。它改变了人们的行为。