我已经意识到我需要更改我正在编写的文件同步程序的设计。
目前,我的计划如下:
1)客户端连接到服务器(并经过验证)
2)如果验证了客户端,则使用与
连接的客户端的套接字创建一个线程并开始循环3)如果客户端或服务器上的文件发生更改,请通过该套接字发送更改(使用select for asynchronous communication)
我的代码很糟糕,因为我在使用一个套接字进行文件传输或使用套接字进行每次文件传输时都很糟糕。两种情况(在我看来)都可以工作,但对于第一种情况,我将不得不创建某种协议来确定哪些字节去哪里(某种类型的标题),对于第二种情况,我将不得不创建新的套接字在一个新的线程(不需要再次验证),以便可以在每个线程上发送文件,而不必担心异步传输。
我更愿意做第二个选项,所以我正在调查使用SocketServer。是否可以使用SocketServer.ThreadingTCPServer和SocketServer.ThreadingMixIn解决这类问题?我很难想到它,因为我认为SocketServer.ThreadingMixIn适用于新连接的客户端,除非我不知何故有一个“外部”套接字服务器服务器“内部”套接字服务器?
答案 0 :(得分:0)
SocketServer将为您服务。您为每个要侦听的端口创建一个SocketServer。您的选择是您是否有一个处理客户端/服务器连接的侦听器以及每个文件连接(您需要某种标头来区分)或两个分离客户端/服务器连接和每个文件连接的侦听器(您需要仍然需要一个标题,以便你知道哪个文件进来了。)
或者,您可以选择像zeromq这样为您提供邮件传输的内容。