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

任意两台内网设备间的 RPC 通讯用什么技术方案?

  •  
  •   qw7692336 · Oct 15, 2015 · 3625 views
    This topic created in 3849 days ago, the information mentioned may be changed or developed.

    早上发了帖:
    http://www.v2ex.com/t/227726
    问的是实时通讯的解决方案,推送的那块,用发布 /订阅模式。

    现在想要一种请求 /响应的模式,作手机远程操作嵌入式设备。
    手机跟嵌入式设备都在内网,都有会唯一的 ID 。

    Supplement 1  ·  Oct 15, 2015
    手机和嵌入式设备在不同的两个内网。
    比如在家控制公司的设备。
    Supplement 2  ·  Oct 15, 2015
    我有一个服务端,连接这不同的客户端,而各个客户端之间,通过服务端的帮助来互相通讯,用请求 /响应的方式通讯
    Supplement 3  ·  Oct 15, 2015
    更清晰的描述应该是 P2P 的 RPC
    22 replies    2015-10-15 23:20:47 +08:00
    qw7692336
        1
    qw7692336  
    OP
       Oct 15, 2015
    halfcrazy
        2
    halfcrazy  
       Oct 15, 2015
    http
    thrift
    protobuf
    qw7692336
        3
    qw7692336  
    OP
       Oct 15, 2015
    @halfcrazy
    没有外网地址,不可能 HTTP
    halfcrazy
        4
    halfcrazy  
       Oct 15, 2015
    @qw7692336 不是任意两台内网设备间么?不需要外网 ip 啊
    qw7692336
        5
    qw7692336  
    OP
       Oct 15, 2015
    @halfcrazy
    通过服务器来管理设备
    qw7692336
        6
    qw7692336  
    OP
       Oct 15, 2015
    @halfcrazy
    没有外网地址怎么用 HTTP
    qw7692336
        7
    qw7692336  
    OP
       Oct 15, 2015
    @halfcrazy
    不同的两个内网
    qinix
        8
    qinix  
       Oct 15, 2015 via iPhone
    如果 http 不行,那么应该可以推知没有协议可以做到

    并不能懂 http 跟有没有外网地址有什么关系
    ryd994
        9
    ryd994  
       Oct 15, 2015
    两个都是内网,要么外网服务器转发,要么外网服务器协助打洞。没有外网机器就完全没戏。
    ljbha007
        10
    ljbha007  
       Oct 15, 2015
    STUN/TURN/ICE 协议是专门 用来给两台 nat 后的设备建立连接打洞用的
    通信协议 一般的 RPC 协议都可以 xml-rpc/json-rpc
    甚至自己用“发布 /订阅”模式的消息队列服务器来实现都可以 用消息队列的好处是 连打洞都可以省了 直接通过服务器来通信
    shangjiyu
        11
    shangjiyu  
       Oct 15, 2015 via Android
    N2N?
    line
        12
    line  
       Oct 15, 2015 via Android
    RPC 好像只能 client 调用 Server 单向的。双向无解。
    qw7692336
        13
    qw7692336  
    OP
       Oct 15, 2015
    @ryd994
    可以转发,可以打洞。关键是有没有现成的这种协议,对已有的设备进行管理,给每个设备分配一个 ID 号,方便设备之间的通讯,就如 VOIP 打电话协议,发 email 协议一样,都是 client to client 的,只不过我想要请求 /响应的方式而已。

    @ljbha007 发布 /订阅是单项的,我需要主动发起请求,向对方获取数据。
    @line
    line
        14
    line  
       Oct 15, 2015
    @qw7692336 就是要双向 RPC 吧,好像没有好方法
    qw7692336
        15
    qw7692336  
    OP
       Oct 15, 2015
    @line
    我有一个服务端,连接这不同的客户端,而各个客户端之间,通过服务端的帮助来互相通讯,用请求 /响应的方式通讯
    line
        16
    line  
       Oct 15, 2015 via Android
    @qw7692336 IM ?
    qw7692336
        17
    qw7692336  
    OP
       Oct 15, 2015
    @line
    IM 也不是请求 /响应的
    line
        18
    line  
       Oct 15, 2015
    @qw7692336 clients 间能交换数据不就可以做成 请求 响应 了吗?
    mulog
        19
    mulog  
       Oct 15, 2015
    我有一个服务端,连接这不同的客户端,而各个客户端之间,通过服务端的帮助来互相通讯,用请求 /响应的方式通讯

    这不就是 IM 吗。。。
    没懂 「 IM 也不是请求 /响应的」是什么意思
    qw7692336
        20
    qw7692336  
    OP
       Oct 15, 2015
    @mulog
    像 HTTP 那样,客户端 A 向客户端 B 发送请求,发送完毕后, A 会一直等待 B 响应数据,直到 B 把数据返回完毕。
    mengzhuo
        21
    mengzhuo  
       Oct 15, 2015 via iPhone
    >>> 没有外网地址就不能用 http
    醉了 同学 你还是多看看书吧

    p2p 至少需要 stun 才能通讯
    为了管理方便稳定
    一般都是转发式的 协议怎么方便怎么来

    最后 还是那句话 多看看书
    qw7692336
        22
    qw7692336  
    OP
       Oct 15, 2015
    @mengzhuo
    难道设备不是需要监听固定的外网端口,才能够随时被外部访问吗?
    总之以设备 IP 地址来访问都是不可能的,只能够通过设备 ID 去访问。
    暂时无论是 P2P 还是服务器转发都可以, stun 这种这么底层的操作不想自己来实现,我想要一套现成的方案而已,像 XMPP 、 VOIP 、 Email 那样,把所有工作都做好,只需要找到对方的 ID 向对方发消息即可,把传输层的操作屏蔽掉。只不过我想要实现请求 /响应模式,想要一套把线程处理、 NAT 穿透等操作都办好的方案。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1006 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 19:15 · PVG 03:15 · LAX 12:15 · JFK 15:15
    ♥ Do have faith in what you're doing.