在套接字Java上收到多个错误

用户名

我正在尝试使用套接字创建文件传输系统。在我开始从服务器向客户端发送String fileName以使文件具有相同名称之前,我的代码曾经能够正常工作。现在,每当我尝试发送文件时,它总是在客户端和服务器中给我不同的错误。

服务器端代码:

public void soc_server() throws IOException {

   long time = System.currentTimeMillis();

    long totalSent = 0;
    ServerSocket servsock = null;
    Socket sock = null;
    PrintWriter pw = null;
    FileInputStream fileInputStream = null;

    try {

        servsock = new ServerSocket(55000);
        sock = servsock.accept();
        System.out.println("Hello Server");
        Scanner sc = new Scanner(System.in);

        System.out.println("Please enter the file name or file path");

        String s = sc.nextLine();

        sc.close();

        File file = new File(s);

        if (file.exists())

            System.out.println("File found");
        else
            System.out.println("File not found");

        OutputStream out = sock.getOutputStream();

        pw = new PrintWriter(sock.getOutputStream(), true);

        pw.print(s);

        fileInputStream = new FileInputStream(s);

        byte[] buffer = new byte[100 * 1024];

        int bytesRead = 0;

        while ((bytesRead = fileInputStream.read(buffer)) != -1) {

            if (bytesRead > 0) {

                out.write(buffer, 0, bytesRead);

                totalSent += bytesRead;

                System.out.println("sent " + (totalSent / 1024) + " KB "
                        + ((System.currentTimeMillis() - time) / 1000)
                        + " sec");
            }

        }

    } catch (Exception e) {

        System.out.println("exception " + e);

    } finally {
        sock.close();

        pw.close();

        servsock.close();

        fileInputStream.close();

        System.out.println("Sent " + (totalSent / 1024) + " kilobytes in "

        + ((System.currentTimeMillis() - time) / 1000) + " seconds");

    }

}

客户端代码:

public void soc_client() throws Exception {
    long time = System.currentTimeMillis();
    long totalRecieved = 0;
    Socket sock = null;
    InputStream in = null;
    BufferedReader br = null;
    FileOutputStream fileOutputStream = null;

    try {
        sock = new Socket("172.16.27.106", 55000);
        System.out.println("Hello Client");
        in = sock.getInputStream();
        br = new BufferedReader(new InputStreamReader(in));
        String fileName = br.readLine();
        File outputFile = new File(fileName + "");
        fileOutputStream = new FileOutputStream(outputFile);

        byte[] buffer = new byte[100 * 1024];
        int bytesRead = 0;

        while ((bytesRead = in.read(buffer)) != -1) {
            fileOutputStream.write(buffer, 0, bytesRead);
            totalRecieved += bytesRead;
            System.out.println("Recieved " + (totalRecieved / 1024)
                    + " kilobytes in "
                    + ((System.currentTimeMillis() - time) / 1000)
                    + " seconds");
        }

    } catch (Exception e) {
        System.out.println("Exception " + e);
    } finally {
        br.close(); // CLOSING BufferedReader
        fileOutputStream.close();
        sock.close();
        System.out.println("Recieved " + totalRecieved + " bytes in "
                + (System.currentTimeMillis() - time) + "ms.");
    }
}

例外情况:

客户端:

Exception java.io.FileNotFoundException: Invalid file path
Exception: java.lang.NullPointerException

Exception in thread "main" java.io.FileNotFoundException: Invalid file path 
          at java.io.FileOutputStream.<init>(Unknown Source) 
          at java.io.FileOutputStream.<init>(Unknown Source) 
          at Client.soc_client(Client.java:25) 
          at Index.main(Index.java:24)

服务器端:

Exception java.net.SocketException: Connection reset
Exception: java.util.NoSuchElementException
Exception java.net.SocketException: Broken pipe

Exception in thread "main" java.net.SocketException: Connection reset 
          at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)
          at java.net.SocketOutputStream.write(SocketOutputStream.java:153) 
          at Server.soc_server(Server.java:59) 
          at Index.main(Index.java:21) 

我尝试发送的文件与我在其中编译类的目录(桌面)相同。谢谢你。

AJ。

尝试直接在客户端路径中提供文件名。

File outputFile = new File("yourfile.txt");

然后将其发送到服务器。

由于FileNotFound客户端方面的异常,您将在finaly处关闭流

当您关闭客户端流时,服务器端无法识别正在从中读取的流,因此会产生Connection reset异常。

由于没有流可以在服务器端读取数据,因此您将获得NoSuchElement异常

编辑

另一件事是,您不会在写入客户端后刷新流,

所以,做pw.flush();pw.print(s)out.write()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java套接字收到HTTP / 1.1 400错误请求

来自分类Dev

python urllib收到[Errno套接字错误]

来自分类Dev

Java套接字和Linux上的多个传出接口

来自分类Dev

为什么会收到“错误套接字挂断”响应?

来自分类Dev

连接到云 SQL 时收到套接字错误

来自分类Dev

在收到的UNIX套接字消息上运行脚本

来自分类Dev

在 zeromq REQ/REP 上收到 EAGAIN 而不阻塞套接字

来自分类Dev

连接错误:套接字上的参数无效

来自分类Dev

通过Java套接字返回多个值

来自分类Dev

Java套接字无法正确显示收到的输入

来自分类Dev

Java套接字将发送但未接收到响应

来自分类Dev

Java套接字未收到来自Print Writer的响应

来自分类Dev

Java到Lua套接字通信错误

来自分类Dev

基本Java Echo套接字通信错误

来自分类Dev

Java上的套接字连接,指定IP

来自分类Dev

Android上的Java-具有InputStream超时错误的奇怪套接字行为

来自分类Dev

接受的套接字上的“错误文件描述符”错误

来自分类Dev

接受的套接字上的“错误文件描述符”错误

来自分类Dev

套接字挂断错误与多个http.get请求

来自分类Dev

在udp套接字上提升asio多个async_send

来自分类Dev

c-udp套接字上的多个变量

来自分类Dev

C TCP / IP服务器绑定错误-非套接字上的套接字操作

来自分类Dev

尝试运行Unicorn时出现“监听循环错误:非套接字上的套接字操作”

来自分类Dev

尝试运行Unicorn时出现“听循环错误:非套接字上的套接字操作”

来自分类Dev

错误10038“非套接字上的套接字操作”后的TIdFTP状态不确定

来自分类Dev

套接字错误-python

来自分类Dev

套接字错误-python

来自分类Dev

对外部API的https请求上的套接字挂断错误?

来自分类Dev

aiohttp-套接字传输上的致命读取错误-TimeoutError

Related 相关文章

  1. 1

    Java套接字收到HTTP / 1.1 400错误请求

  2. 2

    python urllib收到[Errno套接字错误]

  3. 3

    Java套接字和Linux上的多个传出接口

  4. 4

    为什么会收到“错误套接字挂断”响应?

  5. 5

    连接到云 SQL 时收到套接字错误

  6. 6

    在收到的UNIX套接字消息上运行脚本

  7. 7

    在 zeromq REQ/REP 上收到 EAGAIN 而不阻塞套接字

  8. 8

    连接错误:套接字上的参数无效

  9. 9

    通过Java套接字返回多个值

  10. 10

    Java套接字无法正确显示收到的输入

  11. 11

    Java套接字将发送但未接收到响应

  12. 12

    Java套接字未收到来自Print Writer的响应

  13. 13

    Java到Lua套接字通信错误

  14. 14

    基本Java Echo套接字通信错误

  15. 15

    Java上的套接字连接,指定IP

  16. 16

    Android上的Java-具有InputStream超时错误的奇怪套接字行为

  17. 17

    接受的套接字上的“错误文件描述符”错误

  18. 18

    接受的套接字上的“错误文件描述符”错误

  19. 19

    套接字挂断错误与多个http.get请求

  20. 20

    在udp套接字上提升asio多个async_send

  21. 21

    c-udp套接字上的多个变量

  22. 22

    C TCP / IP服务器绑定错误-非套接字上的套接字操作

  23. 23

    尝试运行Unicorn时出现“监听循环错误:非套接字上的套接字操作”

  24. 24

    尝试运行Unicorn时出现“听循环错误:非套接字上的套接字操作”

  25. 25

    错误10038“非套接字上的套接字操作”后的TIdFTP状态不确定

  26. 26

    套接字错误-python

  27. 27

    套接字错误-python

  28. 28

    对外部API的https请求上的套接字挂断错误?

  29. 29

    aiohttp-套接字传输上的致命读取错误-TimeoutError

热门标签

归档