【发布时间】:2019-04-01 00:34:22
【问题描述】:
这里只是初学者。客户端使用sendto() 向服务器发送消息,服务器可以使用recvfrom() 接收该消息。当服务器随后尝试向客户端发送消息时,就会出现问题。客户端代码卡在indata, add = sock.recvfrom(1024)。为什么会发生这种情况?
服务器代码:
import socket
port = 8000
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
address = ('127.0.0.1',port)
try:
s.bind(address)
except socket.error as e:
print(e)
while True:
data, add = s.recvfrom(1024)
break
print(data.decode(), add)
fin = open("send.txt")
senddata = fin.read()
print(senddata)
try:
s.sendto(senddata.encode(),address)
except socket.error as e:
print(e)
s.close()
客户代码:
import socket
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
port = 8000
msg = 'hello server'
sock.sendto(msg.encode(),('127.0.0.1',port))
while True:
indata, add = sock.recvfrom(1024)
break
f = open("received.txt", 'w')
f.write(indata.decode())
sock.close()
如果客户端和服务器都在同一台机器上运行,是否应该使用多个端口?
【问题讨论】:
标签: python-3.x sockets udp