【问题标题】:Server-client file transfer null pointer exception服务器-客户端文件传输空指针异常
【发布时间】:2013-07-25 10:23:00
【问题描述】:

我正在Java上开发一个服务器到客户端的文件传输程序,但由于我对套接字编程知之甚少,因此无法弄清楚如何修复以下代码。代码是客户端的代码:

String receiverIP = null;
    int serverPort = 0;
    hostIP = args[0];
    serverPort = Integer.parseInt(args[1]);
    String fileToSend = args[2]; 
    byte[] aByte = new byte[1];
    int bytesR;
    Socket clientSocket = null;
    Socket connectSocket = null;
    BufferedOutputStream ToClient = null;
    InputStream is = null;

    try {
        ToClient = new BufferedOutputStream(connectSocket.getOutputStream());
        clientSocket = new Socket(hostIP, serverPort);
        is = clientSocket.getInputStream();
    } catch (IOException ex) {
        System.out.println(ex);
    }

至于我的问题,我在第 14 行得到一个空指针异常(毫无疑问,因为当前 connectSocket 为空),但我不知道我可以在 connectSocket 上分配什么(如果它在服务器端,则连接接受套接字可以'已被指派在建立连接后开始写入。)

【问题讨论】:

  • ToClient有什么用?它和is有什么区别?
  • ToClient在这段代码下面用获取到的文件大小填充bytearray

标签: java sockets nullpointerexception file-transfer


【解决方案1】:

与您似乎相信的相反,您不需要两个单独的套接字来读取和写入服务器。一个插座就足够了。您可以调用getInputStream 方法来获取要从服务器读取的流,并调用getOutputStream 来获取要写入服务器的流。您不需要两个插座,只需一个。

【讨论】:

  • 作为套接字编程的初学者,知道这一点非常有帮助,因为我认为 1 个套接字将专注于读取和 1 个用于写入
猜你喜欢
  • 2019-04-08
  • 1970-01-01
  • 2015-08-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2016-05-05
  • 1970-01-01
相关资源
最近更新 更多