V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
hiboshi
V2EX  ›  Python

咨询个 socket 问题

  •  
  •   hiboshi · 2015-02-09 11:19:04 +08:00 · 2840 次点击
    这是一个创建于 3579 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有个树莓派跑的是debian系统,在内网受网关保护,而且我没有路由器权限,做不了端口转发,暂不不考虑vpn

    现在需要外网主动通知我内网的树莓派,想过socket但是好像内网需要主动请求,需要希望能够实现外网主动通知。除了udp打洞 p2p外还有什么办法?

    或者 vpn sock p2p 你们会考虑什么?

    ngrok 比较慢,想通过底层一点的来实现,暂不考虑向日葵

    8 条回复    2015-02-09 16:40:32 +08:00
    invite
        1
    invite  
       2015-02-09 14:25:40 +08:00
    外网主动通知的前提是,外网跟你内网需要有通路,这个就必须你内网主动连接外网。否则人家直接一个数据包过来,丢不到你这边。
    hiboshi
        2
    hiboshi  
    OP
       2015-02-09 15:58:42 +08:00
    @invite 假如内网主动发起了socket请求建立了长连接,这样的外网能主动联系内网吗?
    henices
        3
    henices  
       2015-02-09 16:14:30 +08:00
    @hiboshi 可以。但是过了一段时间长连接会断开,需要监测这种情况客户端重连。
    zhicheng
        4
    zhicheng  
       2015-02-09 16:19:33 +08:00
    如果在公网有 Linux 服务器的话,直接 ssh 端口转发好了,最简单的方法。
    jhaohai
        5
    jhaohai  
       2015-02-09 16:21:30 +08:00
    有一个n2n的软件,可以快速建立一个vpn网络,但是对于nat后面的需要一个有公网IP的server做转发
    hiboshi
        6
    hiboshi  
    OP
       2015-02-09 16:22:05 +08:00
    @henices 额是类似QQ 一样,保持在线上用TCP检查,一段时间检查一次,发现断开重新连接
    hiboshi
        7
    hiboshi  
    OP
       2015-02-09 16:23:10 +08:00
    @jhaohai 公网vps是有的 n2n可以考虑了。
    invite
        8
    invite  
       2015-02-09 16:40:32 +08:00
    @hiboshi 可以的,加上keepalive保持防火墙上的链接状态。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1216 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 23:27 · PVG 07:27 · LAX 15:27 · JFK 18:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.