Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在线程/进程之间传递套接字连接(多处理)_Python_Multithreading_Sockets_Multiprocessing - Fatal编程技术网

Python 在线程/进程之间传递套接字连接(多处理)

Python 在线程/进程之间传递套接字连接(多处理),python,multithreading,sockets,multiprocessing,Python,Multithreading,Sockets,Multiprocessing,我正在准备新的驱动程序(应该可以通过TCP/IP工作),我遇到了一些问题 其主要思想是,将有两个独立的循环 循环在端口上绑定并持续侦听传入的连接请求。一旦一个请求被接受,它就授权客户机,若被授权,则将他的连接传递给第二个循环。在客户机被传递到第二个循环之后,它应该继续侦听传入的连接。如果新客户端连接,它将被传递到第二个循环,依此类推 第二个循环接收连接的客户机,并与他一起管理数据的发送和接收。然而,它也会检查是否有一些新的连接,如果有,它会关闭到客户端的实际连接并使用新的连接 这将确保如果客户端

我正在准备新的驱动程序(应该可以通过TCP/IP工作),我遇到了一些问题

其主要思想是,将有两个独立的循环

  • 循环在端口上绑定并持续侦听传入的连接请求。一旦一个请求被接受,它就授权客户机,若被授权,则将他的连接传递给第二个循环。在客户机被传递到第二个循环之后,它应该继续侦听传入的连接。如果新客户端连接,它将被传递到第二个循环,依此类推
  • 第二个循环接收连接的客户机,并与他一起管理数据的发送和接收。然而,它也会检查是否有一些新的连接,如果有,它会关闭到客户端的实际连接并使用新的连接
  • 这将确保如果客户端连接丢失,我们不必等待超时来获得新连接(这就是我创建这个新驱动程序的原因)。如果新的连接被激活,我们只需关闭旧的连接,继续与调制解调器通信,中断时间要短得多

    以下是代码(简化):

    基本思想是在与实际连接的客户机通信时,不断侦听新的连接

    但是,当我将任何其他内容放入“self.client_queue”时,“if not self.client_queue.empty():”会起作用。但是,当我从“self.socket\u object.accept()”中将客户机和地址放在那里时,它会压碎:

    Traceback (most recent call last):
        File "/usr/lib/python2.7/multiprocessing/queues.py", line 266, in _feed
            send(obj)
    TypeError: expected string or Unicode object, NoneType found
    
    谁能解释一下这里发生了什么事?我已经读到在进程之间移动打开的socet有问题,但是线程是在一个进程中运行的

    Traceback (most recent call last):
        File "/usr/lib/python2.7/multiprocessing/queues.py", line 266, in _feed
            send(obj)
    TypeError: expected string or Unicode object, NoneType found