当前位置:编程学习 > VB >>

winsock实现不同局域网中两台PC通信

PC1是局域网1中的一台电脑;
PC2是局域网2中的一台电脑,
问题是怎样用winsck使PC1和PC2通信?
高手帮忙!
(如果PC2是有固定IP地址的PC,是直连的话,
PC1不管是不是处在局域网中,把PC2当作服务器端,PC1作为客户端,是可以互相通信的,这个有实现.)

没看懂你想问什么 两边都是内网的情况下的通信.

内网穿透啊......好象没见到过VB的代码. 淡定的飘过~~~~~~~~~~~~~~~~~~~~~~~~~ 同一个路由器下的2个局域网?配置一下路由即可,不过不能用vb完成。
用公网连接的2个局域网?这个就麻烦多了(以下省去1000000000字) 两个局域网如何连接?
路由、网关、DNS 两个局域网是由什么来连接的这才是关键。
如果是交换机直接连接,那程序上直接连接指定IP就可以了。
如果是Internet连接,可以用VPN,一样可以直接连接过去。
如果是Internet连接,又没有VPN服务器,可以用P2P技术实现。
不说清楚方式,很难猜的。 我有VB6的代码。
不过价格比较贵。 直接写一个TCP全双工程序不就可以吗??? 需要有前提 必须一个弄成是外网(可以数据转发 端口映射...各种办法啦)  不然 2个不同的内网(局域网)是绝对不可能的.

 简单说明下吧:2个所在不同的局域网 绝对不可能连接 
    1.端口映射 通过路由器端口映射   自己设置下  客户端连接的是外网的IP  被映射的端口 比如本机服务器是80 映射的是81  那么要连接81端口  
   饿 还有事 先下了  下次再补充吧。。。 9楼正解。

一般我们说的局域网,是指出口处做了NAT转换,内部的PC没有合法的公网地址,而是通过内部DHCP分配的一个私有IP地址(共有IP和私有IP的具体知识请自行baidu)。那么在这种情况下,两个私有IP地址是绝对无法直接进行TCP连接的。要解决方法一般有以下几种:1、其中一个局域网中在出口NAT设备上做一个IP映射(或者说将这个私有IP设置为DMZ服务器),将内部某台PC的私有IP地址映射为一个公网IP,然后另外一个局域网中的PC就可以通过访问这个公网IP来连接对方。
2、在公网上另外找一台有公网IP的服务器,两边的PC都连接这台服务器,然后由服务器进行数据转发(这种方法数据传输效率会比较成问题)。

另外,如果两台PC都在同一个局域网内,那么直接用私有IP,两台PC之间也是可以直接互相连接的。
引用 9 楼 hipxh 的回复:
需要有前提 必须一个弄成是外网(可以数据转发 端口映射...各种办法啦) 不然 2个不同的内网(局域网)是绝对不可能的.

 简单说明下吧:2个所在不同的局域网 绝对不可能连接 
  1.端口映射 通过路由器端口映射 自己设置下 客户端连接的是外网的IP 被映射的端口 比如本机服务器是80 映射的是81 那么要连接81端口  
  饿 还有事 先下了 下次再补充吧。。。

现在继续
 2.借助一个外网做数据转发  还是需要有一个是外网的  说原理也比较麻烦 我也就不多说了
原理简单的说 就是外网当了搬运工的作用 比如说 外网的是PC3 他接受PC1数据后 再把数据发给PC2
  只是中间多了一个 PC3  

  这样说吧  你只要是连接互联网 都是以外网的身份访问的  比如你在网吧  访问的都是以同一个IP身份访问的。
  所以说 不管怎么样 都要处理  2个不同局域网的2台PC是不能直接通信的 除非是同一局域网 那样就没问题了。  
    如果还有不懂的也可以+我QQ 550702953  如果有喜欢编程的 也可以加我交流 (本人菜鸟一只。。。。) UDP打洞比较简单。如果楼主对winsock还比较熟的话我讲一下流程你试试应该就会了
如果两台机都在内网则必须有一台SERVER在公网,或端口是映射过的
A,B都用udp向SERVER发信息,SERVER记录下a,b,分别的ip及端口.再将A的信息发给B,b的信息发给A两个就可以直接通讯了.很easy

原理是。a,b,虽然在内网但向外网发udp信息时路由会给它的临时端口,SERVER记录下这个临时端口,告诉a,b等于它们之间的通讯就无问题了。
补充:VB ,  网络编程
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,