外网远程控制如何设置
用 VB winsock tcp协议做了个远程控制程序,1、局域网已经测试连接成功了
2、我的是电信拨号上网的外网用户,没有路由器,
3、我这边作服务器,
程序本身没有问题,要是有路由器也能连接成功,问题是有以上3点该如何设置才能让客户端连接成功呢?
通常家庭上网都是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 + 多线程来开发,最好加上线程
池管理,不然线程太多也麻烦的。
首先服务端地址要可寻, 否则远程端连对方IP都不知道更谈何控制了.
然后防火墙端口要打开, 无论服务器端PC端口还是它连上网的路由器, 要打开响应端口(默认是3389)
再后面就和局域网一样了. 客户端IP设置没错,防火墙设置也没错,为什么telnet 我的外网IP 端口 没用呢,如果telnet 本地IP192.168.0.1 端口 却可以呢,哪里出问题了,如果这个解决了估计那个远程就可以用了,精英们都来呀 如果想做外网远程控制还是用UDP打洞吧。TCP需要映射的比较麻烦。 没路由的话www.ip138.cn看你的IP,客户端直接连接这个IP跟端口就行了...
有路由只能做映射了。
UDP打洞谁有VB6的代码,以前看过C#的代码有点看不太明白 http://user.qzone.qq.com/280831462/blog/1193532115
一个使用软路由的配置文档,偶空间 没路由,申请个动态域名,运行其客户端,您就可以连接您的动态域名了。
去www.changeip.com申请个免费的,很稳定,我一直用(当然,主要是我的软路由内置),changeip自己有客户端的
前提是,您ISP分配给您的ip是公网ip,并且还要没有封端口……
补充:VB , 网络编程