12tangyang12 发表于 2021-3-22 06:06:48

怎样通过服务器转发实现客户端A的数据到客户端B

如题,想实现内网A到内网BCDEF各地的通信,而且不在一个路由器下。怎样通过一台共网服务器做转发?

shawn_bu 发表于 2021-3-22 08:28:45

做路由啊,路由器就是起这个作用的。链接两个不同地址段的网络

chinaye2 发表于 2021-3-22 08:31:10

自己写个网络服务端即可,或者买现成的产品,这种叫d2d模式

at90s 发表于 2021-3-22 08:31:50

用ssh的端口转发功能

Athelloren 发表于 2021-3-22 08:41:45

用万能的Python自己写一个啊 很简单的 给你附上个基础示例 server.py运行在服务器端client.py运行在客户端 实现的是服务器把接受到的任一客户端的数据转发到所有客户端 需要注意的是服务器端将socket绑定到本机IP和端口时 我这用的阿里云服务器 IP并不是填公网IP而是填主私网IP 客户端是填公网IP 如果使用的是某些服务器的话还要在安全组规则中把相应端口开放才行
代码仅为基础示例 看见这代码你就有实现的信心了 实际使用还需继续完善:比如改成非阻塞式的等等等
server.py如下

import socket
import threading

socket_list = []
ss = socket.socket()
# 本机IP和端口
ss.bind(('XXX.XX.XX.XX', 30000))
ss.listen()


def read_from_client(s):
    try:
      return s.recv(2048).decode('utf-8')
    except:
      socket_list.remove(s)


def server_target(s):
    try:
      while True:
            content = read_from_client(s)
            print(content)
            if content is None:
                break
            for client_s in socket_list:
                client_s.send(content.encode('utf-8'))
    except e:
      print(e.strerror)


while True:
    s, addr = ss.accept()
    socket_list.append(s)
    threading.Thread(target=server_target, args=(s, )).start()


client.py如下

import socket
import threading

s = socket.socket()
s.connect(('XX.XX.XX.XX', 30000))


def read_from_server(s):
    while True:
      print(s.recv(2048).decode('utf-8'))


threading.Thread(target=read_from_server, args=(s, )).start()
while True:
    line = input('')
    if line is None or line == 'exit':
      break
    # 输入内容按回车发送
    s.send(line.encode('utf-8'))

cctv02 发表于 2021-3-22 09:08:36

这不是mqtt吗???

12tangyang12 发表于 2021-3-22 11:48:31

at90s 发表于 2021-3-22 08:31
用ssh的端口转发功能

我看看,要是有现成的省的折腾了

12tangyang12 发表于 2021-3-22 11:49:20

Athelloren 发表于 2021-3-22 08:41
用万能的Python自己写一个啊 很简单的 给你附上个基础示例 server.py运行在服务器端client.py运行在客户 ...

还不会python ,只会C#

12tangyang12 发表于 2021-3-22 11:50:08

cctv02 发表于 2021-3-22 09:08
这不是mqtt吗???

有点像,

Athelloren 发表于 2021-3-22 11:52:02

12tangyang12 发表于 2021-3-22 11:49
还不会python ,只会C#

python上手简单 我以前也是用C#后来直接转用python了 开发起来不是一般的快
页: [1]
查看完整版本: 怎样通过服务器转发实现客户端A的数据到客户端B