早上好。我最近开始使用Raspberry Pi(Linux上的仿真器程序)学习网络和Python编程,但我遇到了一些问题。我的作业是制造服务器和三个客户端,其中该客户端应同时从树莓派通过服务器获取温度信息(服务器发送温度)(重要!),但是正如我所看到的,此客户端获取信息,但看起来就像1个客户端获取并休息,直到他收到温度。...我真的不知道我应该在代码中进行什么更改:(
serwer.py
from sense_emu import SenseHat
from time import sleep
import socket
sense = SenseHat()
UDP_IP = "127.0.0.1"
UDP_PORT = 5005
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
while 1:
temp = sense.temp
tempe = str(temp)
message = tempe.encode('utf-8')
sock.sendto(message, (UDP_IP, UDP_PORT))
sleep(1)
client.py
from time import sleep
import socket
UDP_IP = "127.0.0.1"
UDP_PORT = 5005
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind((UDP_IP, UDP_PORT))
while 1:
message, addr = sock.recvfrom(1024)
mes = str(message)
print("received message:"+mes)
sock.close()
sleep(2)
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind((UDP_IP, UDP_PORT))
我真的认为它应该在每个客户端上通过绑定套接字工作,但不幸的是,不是。
您似乎误解了套接字的工作方式,建议您多读一些有关它们的内容
一些指针和一般约定:
bind
处理到特定的“知名”端口,而客户机connect
则处理该地址/端口