次のスクリプトがあります。
import socket
import sys
import traceback
msg = socket.gethostbyname(socket.gethostname())
dest = ('<broadcast>',10100)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.sendto(msg, dest)
print "Sent."
while 1:
(buf,address)=s.recvfrom(10100)
if not len(buf):
break
print "Received from %s: %s" %(address, buf)
その後:
import socket
import traceback
import os
host = ''
port = 10100
sx = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sx.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sx.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
sx.bind((host,port))
while 1:
try:
message, address = sx.recvfrom(10104)
print "Got data from", address
sx.sendto("ola",address)
except (KeyboardInterrupt, SystemExit):
raise
except:
traceback.print_exc()
両方を同じスクリプトで使用するのに問題があります。
ソケットなどについてもっと知りたかっただけで、特に何もありません。
私の考えは、各マシン (Raspberry Pi) にスクリプトを 1 つだけ配置し、それらが同じネットワーク上にあるときはいつでも、一方が他方の存在を認識できるようにすることでした。
私が正しく説明したことを願っています。