tangsizu 发表于 2019-5-9 14:27:57

30元话费求一个好用TCP端口转发服务器

做一个点对点数据采集,太深的网知识不懂,想当然的建一个服务器,开放2个端口,再对两个客户端和数据做转发,不知这样行是否可行,有劳懂的大牛赐教

kelp 发表于 2019-5-9 14:36:14

你需要的是MQTT

icoyool 发表于 2019-5-9 14:41:58

如果不用处理为什么要转发而不直联? 如果要转发为什么不用路由器的转发?

tangsizu 发表于 2019-5-9 14:47:12

kelp 发表于 2019-5-9 14:36
你需要的是MQTT

无耐知识不够啊

tangsizu 发表于 2019-5-9 14:53:49

icoyool 发表于 2019-5-9 14:41
如果不用处理为什么要转发而不直联? 如果要转发为什么不用路由器的转发?

两个客户端是异地的,在阿里去里面搞了一个服务器,里装一个网络调助手,在手上的两个客户端都能连上,阿里云上服务器(网络助手)发送数据,但是两客户不能相互发送,
https://blog.csdn.net/wuquan_1230/article/details/79926287
隔壁坛上有一个大神的工具,我下载不了,不知道能不能实现

st8051 发表于 2019-5-9 14:54:59

我在另外一个贴发过的 ~

wye11083 发表于 2019-5-9 14:56:39

你需要的是VPN。。可惜嵌入式不要想了,还是老老实实做虚拟VPN协议吧。

tangsizu 发表于 2019-5-9 15:00:25

st8051 发表于 2019-5-9 14:54
我在另外一个贴发过的 ~

方便给下地址吗,多谢了

shiva_shiva 发表于 2019-5-9 15:05:47

本帖最后由 shiva_shiva 于 2019-5-9 22:20 编辑

之前在阿里云上写了一个测试软件,楼主看看是否可满足你的要求。
你可以连上试试。
服务器:47.104.72.18:5600
TCP协议,报文格式:
abxxxxyyyydddddd
ab是固定值
xxxx是源id
yyyy是目标id
dddd是数据

两个设备分别是1111和2222,要互传数据,就要发送:
1111发送:ab11112222hello
2222发送:ab22221111hello
就可以互相收到数据了。你可以找个tcp调试软件试试。

RAMILE 发表于 2019-5-9 15:28:01

本帖最后由 RAMILE 于 2019-5-9 22:41 编辑

开一个端口就够了,总共就2个连接

阿里云服务器泡个最简单的listen,逻辑上就当个中转邮箱,收到传感器连接就把消息存起来,收到读取连接就把存的消息发出去,干完就断开TCP

用死等的listen,连多线程都不用开

albert_w 发表于 2019-5-9 15:34:51

找台linux服务器NC命令走一波. 应该是openbsd 的nc吧

看图

zxq6 发表于 2019-5-9 15:38:44

c#写个服务器,收到后,另外端口转发一下即可

st8051 发表于 2019-5-9 15:40:27

tangsizu 发表于 2019-5-9 15:00
方便给下地址吗,多谢了

https://www.amobbs.com/forum.php?mod=viewthread&tid=5690294&page=1#pid10143114

hyghyg1234 发表于 2019-5-9 16:09:01

去了解下mqtt对你有好处。服务器转发做起来比较麻烦。

沉默胜过白金 发表于 2019-5-9 16:50:18

hyghyg1234 发表于 2019-5-9 16:09
去了解下mqtt对你有好处。服务器转发做起来比较麻烦。

移植不了,看着头大。

hyghyg1234 发表于 2019-5-9 16:55:15

沉默胜过白金 发表于 2019-5-9 16:50
移植不了,看着头大。

移植到哪,mqtt协议很简单,TCP/IP完成了就几个字节的协议帧。

lb0857 发表于 2019-5-9 16:59:36

嵌入式做这类项目蛮难

modbus 发表于 2019-5-9 17:12:23

hyghyg1234 发表于 2019-5-9 16:55
移植到哪,mqtt协议很简单,TCP/IP完成了就几个字节的协议帧。

这是就几个字节的事?
MQTT消息的QOS
MQTT支持三种QOS等级:
QoS 0:“最多一次”,消息发布完全依赖底层 TCP/IP 网络。分发的消息可能丢失或重复。例如,这个等级可用于环境传感器数据,单次的数据丢失没关系,因为不久后还会有第二次发送。
QoS 1:“至少一次”,确保消息可以到达,但消息可能会重复。
QoS 2:“只有一次”,确保消息只到达一次。例如,这个等级可用在一个计费系统中,这里如果消息重复或丢失会导致不正确的收费。
MQTT的消息类型
1 CONNECT – 连接服务端:客户端到服务端的网络连接建立后, 客户端发送给服务端的第一个报文必须是CONNECT报文
2 CONNACK – 确认连接请求:服务端发送CONNACK报文响应从客户端收到的CONNECT报文。 服务端发送给客户端的第一个报文必须是CONNACK。如果客户端在合理的时间内没有收到服务端的CONNACK报文, 客户端应该关闭网络连接。合理的时间取决于应用的类型和通信基础设施。
3 PUBLISH – 发布消息:PUBLISH控制报文是指从客户端向服务端或者服务端向客户端传输一个应用消息。
4 PUBACK –发布确认:PUBACK报文是对QoS 1等级的PUBLISH报文的响应。
5 PUBREC – 发布收到( QoS 2, 第一步):PUBREC报文是对QoS等级2的PUBLISH报文的响应。 它是QoS 2等级协议交换的第二个报文。
6 PUBREL – 发布释放( QoS 2, 第二步):PUBREL报文是对PUBREC报文的响应。 它是QoS 2等级协议交换的第三个报文。
7 PUBCOMP – 发布完成( QoS 2, 第三步):PUBCOMP报文是对PUBREL报文的响应。 它是QoS 2等级协议交换的第四个也是最后一个报文。
8 SUBSCRIBE - 订阅主题:客户端向服务端发送SUBSCRIBE报文用于创建一个或多个订阅。 每个订阅注册客户端关心的一个或多个主题。 为了将应用消息转发给与那些订阅匹配的主题, 服务端发送PUBLISH报文给客户端。 SUBSCRIBE报文也( 为每个订阅) 指定了最大的QoS等级, 服务端根据这个发送应用消息给客户端。
9 SUBACK – 订阅确认:服务端发送SUBACK报文给客户端, 用于确认它已收到并且正在处理SUBSCRIBE报文。
10 UNSUBSCRIBE –取消订阅:客户端发送UNSUBSCRIBE报文给服务端, 用于取消订阅主题。
11 UNSUBACK – 取消订阅确认:服务端发送UNSUBACK报文给客户端用于确认收到UNSUBSCRIBE报文。
12 PINGREQ – 心跳请求:客户端发送PINGREQ报文给服务端的。 用于:1. 在没有任何其它控制报文从客户端发给服务的时, 告知服务端客户端还活着。2. 请求服务端发送 响应确认它还活着。3. 使用网络以确认网络连接没有断开。
13 PINGRESP – 心跳响应:服务端发送PINGRESP报文响应客户端的PINGREQ报文。 表示服务端还活着。
14 DISCONNECT –断开连接:DISCONNECT报文是客户端发给服务端的最后一个控制报文。 表示客户端正常断开连接。

xuboluan 发表于 2019-5-9 17:38:46

TCP端口转发,两个设备都有公网IP的话 DDNS,没公网IP环境的话frp或 nrgok。

不成熟的想法:
1、设备有公网IP的情况下:两个服异地设备所在的路由器里设置下路由器端口映射,然后与对方的 公网IP:端口通讯就行了。不需要服务器参与。如果设备公网IP不固定的话需要设置DDNS,设备或路由器支持linux/openwrt/windows都能实现。(DDNS)
2、设备没公网IP的情况下:建个 frp或nrgok的服务器,在两个异地设备或其所在的路由器上运行客户端(路由器需要支持openwrt/linux等系统),打开各自的端口映射,然后与你的服务器对应的 IP:端口通讯就行了。(反向穿透)
3、没有公网IP又改不了路由器状态的话就不知道怎么弄了。
不知道与你想要的效果一不一样。

albert_w 发表于 2019-5-9 17:44:12

xuboluan 发表于 2019-5-9 17:38
TCP端口转发,两个设备都有公网IP的话 DDNS,没公网IP环境的话frp或 nrgok。

不成熟的想法:


lz说的才是常见的做法, 服务器交换数据. 两个插着4G卡的设备要交互数据很痛苦的.

xuboluan 发表于 2019-5-9 17:48:53

albert_w 发表于 2019-5-9 17:44
lz说的才是常见的做法, 服务器交换数据. 两个插着4G卡的设备要交互数据很痛苦的. ...

单片机+4G的话,的确得服务器转发了。如果能跑个linux就能用反向穿透了,就简单了。

bitter 发表于 2019-5-9 20:34:48

golang proxy github上有

hyghyg1234 发表于 2019-5-9 20:53:38

modbus 发表于 2019-5-9 17:12
这是就几个字节的事?
MQTT消息的QOS
MQTT支持三种QOS等级:


不懂你发了这一通,想说明什么。

墨非 发表于 2019-5-9 22:30:24

xuboluan 发表于 2019-5-9 17:38
TCP端口转发,两个设备都有公网IP的话 DDNS,没公网IP环境的话frp或 nrgok。

不成熟的想法:


3、没有公网IP又改不了路由器状态的话就不知道怎么弄了。

在路由器后端再加一级路由啊,支持openwrt的板子便宜的很多啊。
几年前折腾过n2n 就是这么搞的:
页: [1]
查看完整版本: 30元话费求一个好用TCP端口转发服务器