V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
a49666
V2EX  ›  问与答

用手机卡上网的单片机, GPRS 模块怎么 socket 编程和服务器全双工通信。

  •  
  •   a49666 · 2017-07-13 23:46:59 +08:00 · 2874 次点击
    这是一个创建于 2477 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个大学生比赛,楼主和工程学院的合作,他对网络不太懂,我对单片机不太懂。现在需求是这样的,我租了个阿里云的服务器,希望他可以和我全双工的通信。 但是用手机卡上网的在过通讯商的时候用 PAT 协议, 端口号和 ip 地址都不固定。 现在设想他定期向我发汇报,我记下它电信的 IP 地址和端口号,之后我就可以主动给他发消息了。 但是不知道具体怎么操作。。 好像很有难度的样子

    10 条回复    2017-07-16 10:46:17 +08:00
    guoyijun163
        1
    guoyijun163  
       2017-07-14 00:31:39 +08:00
    数据量不大的话不如做轮询简单些……不然就只有类似于 TCP 这样的长链接了
    wohenyingyu02
        2
    wohenyingyu02  
       2017-07-14 00:32:59 +08:00 via iPhone
    别的不懂,就说现在的手机网络基本上都不是外网 IP,而且 NAT 的 Mapping 和 filtering 行为都是最严格的 Address port dependent,想穿透过去服务端必须用同一个外网 IP 端口接收和发送,客户端不管 IP 是否变化,汇报的频率至少一秒一次刷新 mapping 缓存……都是在 4G 下测的,不知 GPRS 是否一样,我是学文科的,只理解 IP 层以上的网络😬
    jigloo
        3
    jigloo  
       2017-07-14 00:33:11 +08:00 via Android
    mqtt
    wohenyingyu02
        4
    wohenyingyu02  
       2017-07-14 00:33:52 +08:00 via iPhone
    @wohenyingyu02 以上说的是 UDP
    feather12315
        5
    feather12315  
       2017-07-14 00:35:16 +08:00 via Android
    VPN 不就是解决这问题的嘛。
    还用想啥
    billlee
        6
    billlee  
       2017-07-14 01:51:17 +08:00
    不太可能实现,单片机上是实现不了 TCP/IP 协议栈的。这种模块一般都是自己实现了协议栈,然后通过 UART 接受 AT 指令给单片机调用,能做的就是那几条指令暴露出来的事情。要完整的 TCP/IP 得上 ARM.
    lty1993
        7
    lty1993  
       2017-07-14 04:11:07 +08:00
    找些提供 lwIP 兼容层的 SPI 的 WiFi 芯片。
    234235
        8
    234235  
       2017-07-14 09:06:21 +08:00
    不知道你的数据量多大,需要全双工通信。
    定期向你汇报,这个就是心跳包啊。
    通信并不难,电脑现在不也是在局域网内吗?暴露出去的也并不是本机的 IP 和端口号。需要长连接就用 TCP,服务器开一个 TCP 端口,设备连接进来,剩下的,和 PC 到 PC 的 socket 通信好像并无差别。心跳包一般 15/30 秒 一条,如果设备不移动且信号较好的话,IP 和端口的改变频率并不高。设备端做好断开重连和数据重发就好。
    UDP 的话就需要你实时回复,IP 不一定会变,但每次 UDP 的端口号都是很大几率改变的。
    另外,如果你们准备采用 UART 接口模块,数据量不可能做的很大。需要替换为 USB 或者 SPI 接口的。不过这样会提高成本和对方的编程难度。
    mkeith
        9
    mkeith  
       2017-07-14 11:04:21 +08:00
    没事 PAT 协议??

    我们 GPRS 是可以连接 Socket 的,而且持续时间长的能持续几天的.
    xieyudi1990
        10
    xieyudi1990  
       2017-07-16 10:46:17 +08:00 via Android
    @billlee 6 年前在单片机上实现过 http 服务器的就看看。还让同学的手机连过。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5888 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:19 · PVG 14:19 · LAX 23:19 · JFK 02:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.