套接字编程 - 客户端主机正在替代

时间:2013-12-20 14:33:18

标签: java sockets file-transfer

我写了一个套接字程序,主机将接收文件,客户端将发送(据我所知)。然而,今天当我检查它时,我看到如果我运行主机,没有任何反应。但是当我运行客户端时,服务器端开始提示并要求我发送文件。然后服务器开始将文件发送到我的客户端PC。 这是代码 服务器端:

ServerSocket servsock = new ServerSocket(50000);
        Socket sock = servsock.accept();


        File to_b_encf = new File("input");

        OutputStream out = sock.getOutputStream();
        FileInputStream fileInputStream = new FileInputStream(to_b_encf);

        byte[] buffer = new byte[64 * 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);
            }
        }

        sock.close();
        servsock.close();
        fileInputStream.close();

客户端代码:

Socket sock = new Socket("172.16.27.106", 50000);
        InputStream in = sock.getInputStream();
        Scanner sc = new Scanner(System.in);
        System.out.print("File path: ");
        String output = sc.nextLine();

        sc.close();

        File fileName = new File(output);


        fileOutputStream = new FileOutputStream(output);
        // sending the actual file

        byte[] buffer = new byte[64 * 1024];
        bytesRead = 0;

        while ((bytesRead = in.read(buffer)) != -1) {
            fileOutputStream.write(buffer, 0, bytesRead);
            totalRecieved += bytesRead;
        }
        sock.close();
        fileOutputStream.close();

现在,除了我的文件发送和文件接收错误之外,我还有另外一个问题。 我想在没有任何路由器或LAN连接的帮助下将文件从一台笔记本电脑发送到另一台。所以,我想我需要一个特定应用网络。什么是最好的或安全的应用程序特定网络? Java是否为特定应用程序网络提供了任何库?顺便说一句,我不知道这个领域。这不是我目前对该项目的关注。只是为了抬头实际上。

谢谢。

1 个答案:

答案 0 :(得分:0)

  

我写了一个套接字程序,主机将接收文件,客户端将发送(据我所知)

看起来服务器是发送文件并且客户端正在接收的服务器。

  

然而,今天当我检查它时,我看到如果我运行主机,没有任何反应。但是当我运行客户端时,服务器端开始提示并要求我发送文件。然后服务器开始将文件发送到我的客户端电脑。

这正是客户端 - 服务器应用程序的工作方式。服务器坐在那里等待客户端连接。在您的应用程序中,服务器实际上不会提示用户输入任何内容。所有提示都在您的客户端代码中。一旦客户端连接,服务器就会将其文件从套接字推送到客户端。

除了服务器和客户端实际执行的操作之间的混淆之外,我认为这个应用程序没有任何问题。

至于你的第二个问题,我无法帮助你。试着在另一个问题中提问。