【问题标题】:Socket Programming - Client-Host is working alternative套接字编程 - 客户端 - 主机正在替代
【发布时间】:2013-12-20 23:30:17
【问题描述】:

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

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 是否为特定于应用程序的网络提供任何库?顺便说一句,我对这个领域一无所知。这不是我目前对该项目的关注。实际上只是为了提个醒。

谢谢。

【问题讨论】:

  • 不清楚这样做的目的是什么,你只是想在机器之间移动文件并且碰巧知道java吗?使用 ftp 或 scp 怎么样?

标签: java sockets file-transfer


【解决方案1】:

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

看起来服务器是发送文件的,而客户端是接收的。

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

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

除了服务器和客户端实际在做什么之间的混淆之外,我看不出这个应用程序有什么问题。

至于你的第二个问题,我帮不了你。尝试在另一个问题中提问。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 1970-01-01
    • 2016-02-06
    相关资源
    最近更新 更多