在同一文件中运行服务器和客户端-python
我正在使用tftpy,需要创建一个服务器,然后是一个客户端来下载/上传一些文件,然后我可以关闭服务器 我曾考虑使用多处理来实现这一点,但我不知道如何优雅地关闭服务器。最后一种方法是使用terminate(),但可能有一种更好的方法(可能是一种更简单的方法,不使用多处理)。我也知道multiprocessing.Event(),但我不知道run_sv()方法将如何保持侦听 代码如下:在同一文件中运行服务器和客户端-python,python,multiprocessing,Python,Multiprocessing,我正在使用tftpy,需要创建一个服务器,然后是一个客户端来下载/上传一些文件,然后我可以关闭服务器 我曾考虑使用多处理来实现这一点,但我不知道如何优雅地关闭服务器。最后一种方法是使用terminate(),但可能有一种更好的方法(可能是一种更简单的方法,不使用多处理)。我也知道multiprocessing.Event(),但我不知道run_sv()方法将如何保持侦听 代码如下: import multiprocessing import tftpy def run_sv(): na
import multiprocessing
import tftpy
def run_sv():
name = multiprocessing.current_process().name
print name, 'Starting sv'
server = tftpy.TftpServer('./rootf')
server.listen('0.0.0.0', 69)
print name, 'Exiting sv'
def run_cl():
name = multiprocessing.current_process().name
print name, 'Starting cl'
client = tftpy.TftpClient('127.0.0.1', 69)
client.download('aaa.txt', './downf/zzz.txt')
print name, 'Exiting cl'
if __name__ == '__main__':
service = multiprocessing.Process(name='my_sv', target=run_sv)
worker_1 = multiprocessing.Process(name='my_cl', target=run_cl)
service.start()
worker_1.start()
输出:
my_sv Starting sv
my_cl Starting cl
my_cl Exiting cl
当然,它挂在那里。试试这个:
service.start()
worker_1.start()
worker_1.join()
service.terminate()
在run_sv结束之前尝试在服务器上调用.close()?服务器往往会无限期运行,您应该找到一种方法,在客户端完成其workno close()方法后将其关闭。服务器开始监听,但没有回复“promt”。用terminate()终止进程pid是一种替代方法,但并不优雅。它当时是挂在主进程中等待客户端还是服务器?