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()
函数来调试线程创建后是否发生任何事情。
这是我得到的输出:
What is your name?
Name: FlowR
: test
:
您正在调用 Send()
函数而不是将其作为参数传递,这就是它阻塞的原因。
删除 target=Send()
后的 ()
:
Thread(target=Send).start()
我最近选择了 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()
函数来调试线程创建后是否发生任何事情。
这是我得到的输出:
What is your name?
Name: FlowR
: test
:
您正在调用 Send()
函数而不是将其作为参数传递,这就是它阻塞的原因。
删除 target=Send()
后的 ()
:
Thread(target=Send).start()