我正在开发一个客户端服务器程序。服务器支持来自同一端口的多个连接,并为每个连接的客户端创建一个新进程。客户端能够向服务器发送多个命令并从中获取结果。其中一个命令是'get',用于将任何文件从服务器传输到客户端。 (例如,获取abc.txt bcd.pdf ...)。
但是,此传输操作应在不同的线程中完成。例如,如果客户端请求从服务器传输3个文件;在服务器端和客户端都创建了3个不同的线程。这样,客户端将创建client_thread1,client_thread2,client_thread3,服务器将为文件创建server_thread1,server_thread2,server_thread3。然后第一个文件将由server_thread1上传到client_thread1,第二个文件将由server_thread2上传到client_thread2,依此类推。
这是我遇到的唯一一点。如何将服务器线程与客户端线程匹配;这样服务器线程只与客户端线程通信,而服务器和客户端自由地完成自己的工作。
感谢您的帮助。
答案 0 :(得分:2)
如果要在文件传输之间取得独立进展,则必须打开与服务器的多个连接。所以你有一个单独的命令通道套接字,以及一个用于每个并发文件传输的套接字。然后,您可以从单独的线程(不好,如上所述)或使用poll
之类的东西为一个线程上的多路复用套接字处理服务每个套接字。就这样,你重写了FTP:)
或者,您可以提出一些方案来在一个套接字上复用多个文件传输。