【问题标题】:Concurrent ServerSocket connections并发 ServerSocket 连接
【发布时间】:2015-04-10 00:48:27
【问题描述】:

在 Andrey Kozhanov 的代码中引用 this post

在 Server.java 中,第 14 行,方法 run():

当我发送文件“A”并在文件传输期间启动另一个客户端并发送其他文件“B”时,最后一次传输(“B”)将阻塞,直到“A”完成。

如何实现并发服务器接收器?

谢谢。

【问题讨论】:

  • 你有什么不明白的?看来你没有付出足够的努力。本网站不是为了让您逐步了解主题,而是帮助您获得特定编程问题的答案。尝试尝试并告诉我们您在哪里遇到问题,或者告诉我们您目前在理解方面有什么困难。
  • 你粗鲁!我的SPECIFIC 的问题是不了解并发性。是如何解决SPECIFIC 端口正忙于接收数据并且正在建立不同连接的情况。所以,感谢@Krab 成为SPECIFIC 并给我解决方案。再次感谢您用一些代码进行说明。世界上所有的努力在好主意面前都算不上什么。
  • 我并没有粗鲁,或者至少没有试图这样做。我只是告诉你该网站是如何运作的..link。有许多不同的方法可以创建“并发服务器接收器”。您应该自己研究它,尝试一下,然后在遇到问题后在此处发布您的问题。我还建议您查看 [链接]“表现得像在与忙碌的同事交谈”。没必要这么敌对;那会让我以后不想帮你。 CodeReview 可以帮助您改进系统。 “想法”不是这个网站的目的;它的具体答案

标签: java file-transfer serversocket


【解决方案1】:

您可以为每个新客户创建新线程。

public class Server extends Thread {

     ...

    @Override
    public void run() {
        try {
            ServerSocket serverSocket = new ServerSocket(PORT);

            while (true) {
                Socket s = serverSocket.accept();
                (new FileSaver(s)).start();

            }
         } catch (Exception e) {
            e.printStackTrace();
         }
     }

    ...
}
public class FileSaver extends Thread {

    Socket socket;

    public FileSaver(Socket socket) {
        socket = socket;
    }

    public saveFile() {
        // save the file here
    };

    public void run() {
        saveFile();
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    相关资源
    最近更新 更多