1

我在 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")
4

0 回答 0