V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
tctc4869
V2EX  ›  Java

一个配置了 spirng mvc 服务器的 Java web 服务器,如何与带有 gps 模块的单片机进行 socket 的通信?

  •  
  •   tctc4869 · Oct 17, 2019 · 5423 views
    This topic created in 2385 days ago, the information mentioned may be changed or developed.

    我用的不是 spring boot,是自己搭建的 ssm 架构,我记得 spring mvc 有一个 WebSocket 的 jar 包,我百度了一下,那个 jar 包好像是专门用于浏览器与服务器之间的。

    我要用一个 4g 模块的单片机向服务器发起 tcp 通信或者 udp 通信,将位置数据发送给服务器,那个 WebSokcet.jar 包能做这些.或者有现成样例代码可以参考吗

    首先这个单片机,根据测试软件的测试结果,该单片机好像是支持 socket 服务的。

    26 replies    2019-10-17 16:37:21 +08:00
    momocraft
        1
    momocraft  
       Oct 17, 2019
    websocket 不是浏览器专用的

    但是 socket 不是 websocket
    qping
        2
    qping  
       Oct 17, 2019
    websocket 是应用层协议,在 tcp/ip 之上,你需要的是 java socket
    tctc4869
        3
    tctc4869  
    OP
       Oct 17, 2019
    @qping 那要怎么在 Spring mvc 用 socket 的?这个我不会啊
    ByteRan
        4
    ByteRan  
       Oct 17, 2019
    @tctc4869 #3 #3 百度 谷歌会不会,这个和 spring 没关系
    tctc4869
        5
    tctc4869  
    OP
       Oct 17, 2019
    @qping 或者说是不是只有要在 web 程序开始的时候,加载一段服务端 socket 代码,用 white 循环死循环套住,不停的等待接收数据?
    qping
        6
    qping  
       Oct 17, 2019
    @tctc4869 #5 bingo
    tctc4869
        7
    tctc4869  
    OP
       Oct 17, 2019
    @tanranran 我目前的思路就是在 web 程序加载的时候所运行的方法里,加载一个服务端的 socket 的一段代码,并用死循环套住。这样的话,会有什么问题吗
    tctc4869
        8
    tctc4869  
    OP
       Oct 17, 2019
    @momocraft 那 websocket 能与非浏览器的应用程序或者是硬件设备进行通信吗
    misaka19000
        9
    misaka19000  
       Oct 17, 2019
    netty
    momocraft
        10
    momocraft  
       Oct 17, 2019
    如果开发者会写,能 @tctc4869
    fkmc
        11
    fkmc  
       Oct 17, 2019
    netty mina
    alienx717
        12
    alienx717  
       Oct 17, 2019
    利用这些 netty mina tio smart-socket 框架收发消息、暴露 tcp 端口。
    终端连接到服务端的这个端口发送报文。
    根据协议在收到消息的那个 handler 中解析。
    也可以先在 decoder 那层解析后封装到自定义的对象里面。
    xyooyx
        13
    xyooyx  
       Oct 17, 2019
    你说的 tcp 和 udp 归属传输层协议,我们 spring mvc 处理的都是应用层协议,所以你需要的应该是 netty
    knva
        14
    knva  
       Oct 17, 2019
    再起一个服务,专门用于通信, 用数据库跟 web 层交互
    yplam
        15
    yplam  
       Oct 17, 2019
    如果要自己造轮子的话就 netty

    简单的话就 mqtt
    leafre
        16
    leafre  
       Oct 17, 2019
    netty
    gz911122
        17
    gz911122  
       Oct 17, 2019
    netty 简单一些

    vertx 基于 netty 封装了一层,用起来更简单一些
    andychen20121130
        18
    andychen20121130  
       Oct 17, 2019
    websocket 协议不一样。
    netty 吧。 我有一套代码。
    opengps
        19
    opengps  
       Oct 17, 2019
    socket 服务端可以认为是独立的,不管你借助什么形式运行都可以,只是需要额外注意对外公开端口
    ESeanZ
        20
    ESeanZ  
       Oct 17, 2019
    单片机、物联网应该用 MQTT 吧。
    hugedata
        21
    hugedata  
       Oct 17, 2019
    你的 spring MVC 写一个接收 post 消息的 action,根据结果,返回 json,单片机中看你用的具体哪个系统,有没有移植好的 curl,有的话,c\C++\shell 等任意语言调用 curl 命令,没有的话,自己找该系统提供的 http 请求组件,然后用它访问你的 springMVC 的这个 action,带上 post 数据,以 post 方式提交。然后根据结果判断提交是否成功。这么简单的事情。。。。贵司就没有人能想明白吗?
    mango88
        22
    mango88  
       Oct 17, 2019
    仅仅用来上传 gps 等位置数据,服务器不需要与设备交互等需求
    不需要用到长连接通讯吧
    发起一个 http request 有啥不能解决的
    zhenjiachen
        23
    zhenjiachen  
       Oct 17, 2019
    Spring 不是有个 RSocket 吗,好像可以和 Spring MVC 一起用?
    tctc4869
        24
    tctc4869  
    OP
       Oct 17, 2019
    @hugedata 这个单片机可以发 http 请求,我一开始想用 http 的,用 at 命令可以得到 gps 数据,不过目前,只能发手动填写的数据,发不了 gps 上去。用 tcp 好像可以。
    用 http 发 gps 数据有一个问题。做不到用 at 命令进行中转,我向同事咨询过,能不能通过 c 语言中转,先发获得 gps 的 at 命令,然后通过 c 语言字符数组做到拼接得到的 gps 数据作为 http 通信请求路径的数据位,再通过 at 命令发一个 post 请求。他回答这个单片机不行。我很久没接触 c 语言了。

    这边有用单片机向 tcp 发送到其他网站测试的例子
    tctc4869
        25
    tctc4869  
    OP
       Oct 17, 2019
    @mango88 参考楼上
    hugedata
        26
    hugedata  
       Oct 17, 2019
    你的 spring MVC 写一个接收 post 消息的 action,根据结果,返回 json,单片机中看你用的具体哪个系统,有没有移植好的 curl,有的话,c\C++\shell 等任意语言调用 curl 命令,没有的话,自己找该系统提供的 http 请求组件,然后用它访问你的 springMVC 的这个 action,带上 post 数据,以 post 方式提交。然后根据结果判断提交是否成功。这么简单的事情。。。。贵司就没有人能想明白吗?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2872 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 65ms · UTC 15:42 · PVG 23:42 · LAX 08:42 · JFK 11:42
    ♥ Do have faith in what you're doing.