我在 ad-hoc 网络中有一台服务器和其他一些客户端节点。一些节点在服务器范围内,可以直接接收hello消息并广播给邻居,但哪些节点不在服务器范围内,将接收来自服务器邻居节点的hello消息。
我的程序中有第一个问题,我需要将主机 ID 放在客户端,它将消息传输到客户端或客户端到客户端,对于服务器到客户端,我可以通过使用套接字(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) 但是对于那些不是服务器邻居的下一个客户端我需要广播 id 因为这些节点只知道服务器 IP
那么我如何通过使用广播地址而不是 IP 地址来编程广播 hello 消息这是客户端中的代码,我输入了我的主机 ID,但主机 ID 仅在距服务器一跳有效,其余节点将不接受 hello 消息,因为它们不会与另一个节点 ip 连接,而且我想在每个节点上获得一个 hello 消息。
请帮助修改我的以下代码。
import socket
print ("----trying to connect with host")
HOST = ''
PORT = 5000
HOST1='101.0.0.2'
PORT1=5001
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST,PORT))
s.listen()
conn, addr = s.accept()
with conn:
print('Connected by', addr)
while True:
data = conn.recv(4096)
print (data)
if not data: break
conn.sendall(data)
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s1:
try:
s1.connect ((HOST1,PORT1))
s1.sendall (b'hello i am client 1')
print ("Connected to ", HOST1)
except ConnectionRefusedError:
print ("Connection Refused")