这是TCP服务端代码:
import socket
import threading
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('127.0.0.1', 9998))
s.listen(5)
print('Waiting for connection')
def tcplink(sock, addr):
print('Accept new connection from %s:%s...' % addr)
sock.send(b'Welcome!')
buffer = []
while True: #接受数据时就卡在这里了
d = sock.recv(1024)
if not d:
break
else:
buffer.append(d)
sock.send('get it!'.encode('utf-8'))
print((b''.join(buffer)).decode('utf-8'))
sock.close()
print('Connection from %s:%s closed.' % addr)
while True:
sock, addr = s.accept()
t = threading.Thread(target=tcplink, args=(sock, addr))
t.start()
客户端代码:
import socket
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.send(b'nihao')
buffer = []
while True:
d = s.recv(1024)
if not d:
break
else:
buffer.append(d)
data = b''.join(buffer)
s.close()
print(data.decode('utf-8'))
上网查了很多方式比如settimeout,MSG_DONTWAIT,都失败了,如何修改代码才能正常接受数据呢?求详细一点的说明,谢谢!