Python转发流数据的脚本

Python script for forwarding streaming data

我正在尝试从一个端口获取传入数据并将其流式传输到另一台计算机上的端口。这是我目前所拥有的:

import socket
port = 8787
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(("", port))
print ("waiting on port:", port)
while 1:
    data, addr = s.recvfrom(1024)
    print (data)

`

所以我可以使用上面的脚本从端口流式传输数据,没问题。我现在需要做的是获取该数据流并将其转发到另一台计算机上的端口。我遇到了这个:

#!/usr/bin/python
from socket import *
bufsize = 1024 # Modify to suit your needs
targetHost = "192.1.1.2"
listenPort = 8788

def forward(data, port):
print "Forwarding: '%s' from port %s" % (data, port)
sock = socket(AF_INET, SOCK_DGRAM)
sock.bind(("localhost", port)) # Bind to the port data came in on
sock.sendto(data, (targetHost, listenPort))

def listen(host, port):
listenSocket = socket(AF_INET, SOCK_DGRAM)
listenSocket.bind((host, port))
while True:
    data, addr = listenSocket.recvfrom(bufsize)
    forward(data, addr[1]) # data and port

listen("localhost", listenPort)

但我不确定将传出端口放在哪里。我正在提取数据的家庭服务器的 IP 地址为 192.1.1.1,并且正在从端口 8787 流式传输数据。远程服务器的 IP 地址为 192.1.1.2,它正在侦听端口 8788。我我不确定我需要将端口 8787 放在哪里,这是家庭服务器从中提取数据的地方。任何建议都会很有帮助。谢谢!

如果你引用的最后一个代码在你的 192.1.1.1 上运行,你需要在最后一行调用 listen("localhost", 8787) 而不是 listen("localhost", listenPort),你应该没问题。 listenPort指的是转发数据的服务器(192.1.1.2)监听的端口,而listen指的是当前机器(192.1.1.1)监听输入的端口。 listen 然后调用 forward(告诉它使用相同的端口进行传出连接)。