从Python进行网络广播时,出现以下错误:OSError:[Errno 101]网络无法访问
我的代码如下:
def send(ip, message):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((ip, 4601))
try:
sock.sendall(message)
response = sock.recv(1024)
finally:
sock.close()
if response:
return response
else:
return False
我用“ <broadcast>”替换了ip,这是我得到错误的地方。我的服务器正在监听4601端口,所以我不知道发生了什么。我也将其替换为network-manager中提供的实际网络广播地址,但仍然一无所获。
如果是广播,则不应使用TCP,而应使用UDP。然后再次需要使用sendto()
method而不是connect()
。sendto()
用于将数据发送到某个地址,在本例中为“广播”地址。因此,以下应该工作:
import socket
message = "Hello"
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.sendto(message, ('<broadcast>', 50000))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句