繁体   English   中英

python多线程和套接字连接问题

[英]Issue with python multi threading and socket connections

我最近选择了python,并试图学习有关网络的更多信息。 我遇到了一个问题,我尝试使用多线程同时侦听和发送数据。 这是代码:

import socket
from threading import Thread


name = ""


s = socket.socket()

def Main():
    print("What is your name?")
    name = input("Name: ")
    Connect()

def Connect():
    host = '127.0.0.1'
    port = 5000


    s.connect((host, port))
    Thread(target=Send()).start()
    print("oh")
    Listen()


def Listen():
    while True:
        data, addr = s.recvfrom(1024)
        data = data.decode('utf-8')
        if not data:
            break
        print(data)

def Send():
    message = input(name + ": ")
    while message != 'q':
        s.send(message.encode("utf-8"))
        message = input(name + ": ")
    s.close()
Main()

问题在于,当创建Thread时,程序被困在Send()函数的while循环中,并且它从不调用Listen()函数。 我添加了print()函数来调试在创建线程后是否发生任何事情。

这是我得到的输出:

你叫什么名字?

名称:FlowR

:测试

您正在调用Send()函数而不是将其作为参数传递,这就是它被阻止的原因。

()放到target=Send()

Thread(target=Send).start()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM