这不是我的意思,一个进程在端口a向外网多个ip和端口发包,另一个进程始终监听端口a的收包
时间: 2024-03-13 20:46:10 浏览: 66
非常抱歉,我理解有误。以下是一个示例代码,可以实现一个进程发送数据包到多个 IP 和端口,另一个进程监听指定端口并接收数据包。
```python
import multiprocessing
import socket
def send_packets(ip_list, port_list):
# 创建一个 UDP 套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 发送数据到指定的 IP 和端口
for ip in ip_list:
for port in port_list:
message = "Hello from {} on port {}".format(ip, port)
sock.sendto(message.encode(), (ip, port))
# 关闭套接字
sock.close()
def receive_packets(port):
# 创建一个 UDP 套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定到指定端口
sock.bind(("localhost", port))
# 循环监听端口并接收数据
while True:
data, addr = sock.recvfrom(1024)
# 打印接收到的数据
print("Received:", data)
# 关闭套接字
sock.close()
if __name__ == "__main__":
# 定义要发送数据的 IP 和端口列表
ip_list = ["127.0.0.1", "192.168.0.1"]
port_list = [8000, 9000]
# 创建两个进程,一个发送数据,一个接收数据
sender_proc = multiprocessing.Process(target=send_packets, args=(ip_list, port_list))
receiver_proc = multiprocessing.Process(target=receive_packets, args=(8000,))
# 启动进程
sender_proc.start()
receiver_proc.start()
# 等待进程结束
sender_proc.join()
receiver_proc.join()
```
在这个例子中,我们使用了 UDP 协议来发送和接收数据。发送进程会循环遍历 IP 和端口列表,向每个 IP 和端口发送一条消息。接收进程会循环监听指定端口并接收数据。如果你想使用 TCP 协议,可以将 socket 的类型设置为 SOCK_STREAM。
阅读全文