+ -
当前位置:首页 → 问答吧 → 外网远程控制如何设置

外网远程控制如何设置

时间:2011-11-06

来源:互联网

用 VB winsock tcp协议做了个远程控制程序,

1、局域网已经测试连接成功了
2、我的是电信拨号上网的外网用户,没有路由器,
3、我这边作服务器,

程序本身没有问题,要是有路由器也能连接成功,问题是有以上3点该如何设置才能让客户端连接成功呢?

作者: jj4599   发布时间: 2011-11-06

通常家庭上网都是PPPOE拨号的,这种拨号得到的Internet IP 地址有时候是伪IP的,但有时候
也可能是公网 IP 地址,如果是公网 IP 地址,只要没什么防火墙阻挡,基本上直接用客户端连
接到你的 IP 地址就可以了,也可以用“花生壳”这种软件弄个域名来给客户端连接,这样就更加
方便程序的编写,如果是伪IP,就只有通过 P2P 技术实现了。但 P2P 需要有一台公网服务器交
换用户数据做打洞的告知处理,如果有条件,可以用 P2P 技术实现,即使是伪IP都可以点对点通讯。
还有,局域网的环境与 Internet 有很大不同,开发 Internet 程序和局域网可以说有很多要注意
的地方,特别是 winsock 控件,有时候还会出现数据收发不一致的现象,比如你发个字符串"1234"
可能收到的是 "1234" & String(4,0) 或 "123" 也不一定。
所以为此要做比较多的校验、过滤等操作,而且要注意握手协议的设置,不要太依赖于数据识别。
还有就是 VB 做这样的网络服务程序其实不是很适合的,因为VB不好使用多线层操作,这样会占用
大量的CPU与内存资源。如果用 winsock 控件数组的方式,连接数也很有限,而且反应也慢。
比如就内网来说,如果你尝试用 VB + winsock 控件做 HTTP 代理服务,你访问几个网页就会发现,
VB 的这种方式不适合开发正真的网络服务器程序。不过如果做些小项目,几个点慢慢通讯,不是很
要求效率的,VB这种方式还是可以的。
如果要开发专业的网络服务程序,建议还是用 C++ 用 SOCK API + 多线程来开发,最好加上线程
池管理,不然线程太多也麻烦的。


作者: SupermanKing   发布时间: 2011-11-06