C 来自同一客户端的多个连接

C 来自同一客户端的多个连接,c,multithreading,client-server,C,Multithreading,Client Server,我正在用C语言开发一个客户机-服务器程序。服务器支持来自同一端口的多个连接,并为每个连接的客户机创建一个新进程。客户机能够向服务器发送多个命令并从中获取结果。其中一个命令是“get”,用于将任何文件从服务器传输到客户端。(例如,获取abc.txt bcd.pdf…) 但是,此传输操作应在不同的线程中完成。例如,如果客户端请求从服务器传输3个文件;服务器端和客户端都创建了3个不同的线程。因此,客户端将创建客户端线程1、客户端线程2、客户端线程3,服务器将为文件创建服务器线程1、服务器线程2、服务器

我正在用C语言开发一个客户机-服务器程序。服务器支持来自同一端口的多个连接,并为每个连接的客户机创建一个新进程。客户机能够向服务器发送多个命令并从中获取结果。其中一个命令是“get”,用于将任何文件从服务器传输到客户端。(例如,获取abc.txt bcd.pdf…)

但是,此传输操作应在不同的线程中完成。例如,如果客户端请求从服务器传输3个文件;服务器端和客户端都创建了3个不同的线程。因此,客户端将创建客户端线程1、客户端线程2、客户端线程3,服务器将为文件创建服务器线程1、服务器线程2、服务器线程3。然后,第一个文件将由服务器_thread1上载到客户端_thread1,第二个文件将由服务器_thread2上载到客户端_thread2,依此类推

这是我唯一坚持的观点。如何将服务器线程与客户端线程匹配;这样,当服务器端和客户端自由地执行各自的工作时,服务器线程只与客户端线程通信


谢谢你的帮助。

如果你想在文件传输之间取得独立的进展,那么你必须打开到服务器的多个连接。因此,命令通道有一个单独的套接字,每个并发文件传输都有一个套接字。然后,您可以从一个单独的线程(如上所述,坏的)为每个套接字提供服务,或者使用类似于
poll
的方法在一个线程上多路复用套接字处理。就这样,你重写了FTP:)


或者,您可以提出一些方案,在一个套接字上多路传输多个文件传输

FWIW,如果您想扩展它,那么为每次传输创建一个线程是一个非常糟糕的主意。看看有没有其他选择,为什么?同时传输三个文件并不比无缝传输快。网络是瓶颈,你不能多线程。