列表项
当我在套接字程序中编写线程时,它告诉我传输端点未连接,这对我来说很奇怪
这是我的代码:
服务器端:
from ast import arg
from audioop import add
import socket
import threading
soc_server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
soc_port = 5053
soc_server.bind(('127.0.0.1',soc_port))
def sendfunc(soc_client , list = []):
if soc_server.recv(1024):
text = soc_server.recv(1024)
list += text.decode('utf-8')
print(text.decode('utf-8'))
soc_client.sendall(text.encode('utf-8'))
else:
soc_client.sendall(f'hello from server')
soc_server.listen(5)
for i in range(5):
soc_client , addr = soc_server.accept()
print('connected to : ' + addr[0])
# thread1 = threading.Thread(target=recvfunnc, daemon=False , args = (soc_client))
# thread1.start()
# text = soc_server.recv(1024)
thread = threading.Thread(target=sendfunc, daemon=False,args=(soc_client , list))
thread.start()
客户端:
import socket
soc_client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
soc_port = 5053
soc_client.connect(('127.0.0.1',soc_port))
a = soc_client.recv(1024)
print(a.decode('utf-8'))
soc_client.sendall(b'hellp')
soc_client.close()
if soc_server.recv(1024): text = soc_server.recv(1024)
无法从服务器套接字读取。这应该是soc_client
,而不是soc_server
。除此之外,代码可能不符合您的预期—它将首先从套接字读取1024字节,并丢弃结果。然后,它将再读取一个,最大1024字节到text
。