搜索
bottom↓
回复: 9

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

[复制链接]

出0入8汤圆

发表于 2021-3-22 06:06:48 来自手机 | 显示全部楼层 |阅读模式
如题,想实现内网A到内网BCDEF各地的通信,而且不在一个路由器下。怎样通过一台共网服务器做转发?

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入58汤圆

发表于 2021-3-22 08:28:45 来自手机 | 显示全部楼层
做路由啊,路由器就是起这个作用的。链接两个不同地址段的网络

出0入0汤圆

发表于 2021-3-22 08:31:10 | 显示全部楼层
自己写个网络服务端即可,或者买现成的产品,这种叫d2d模式

出0入0汤圆

发表于 2021-3-22 08:31:50 来自手机 | 显示全部楼层
用ssh的端口转发功能

出0入0汤圆

发表于 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'))

出0入0汤圆

发表于 2021-3-22 09:08:36 | 显示全部楼层
这不是mqtt吗???

出0入8汤圆

 楼主| 发表于 2021-3-22 11:48:31 来自手机 | 显示全部楼层
at90s 发表于 2021-3-22 08:31
用ssh的端口转发功能

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

出0入8汤圆

 楼主| 发表于 2021-3-22 11:49:20 来自手机 | 显示全部楼层
Athelloren 发表于 2021-3-22 08:41
用万能的Python自己写一个啊 很简单的 给你附上个基础示例 server.py运行在服务器端  client.py运行在客户 ...

还不会python ,只会C#

出0入8汤圆

 楼主| 发表于 2021-3-22 11:50:08 来自手机 | 显示全部楼层
cctv02 发表于 2021-3-22 09:08
这不是mqtt吗???

有点像,

出0入0汤圆

发表于 2021-3-22 11:52:02 | 显示全部楼层
12tangyang12 发表于 2021-3-22 11:49
还不会python ,只会C#

python上手简单 我以前也是用C#后来直接转用python了 开发起来不是一般的快
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-13 01:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表