我想做个聊天之类的东西,但是不知道外网怎么跟内网通讯,我的pc连的是内网,通过路由器连上Internet的,
我想测试一下,如果服务器放在我这台机器上,外网的客服端可以访问到服务器吗?可以的吗?怎么连接呢?
麻烦大家帮下了。

解决方案 »

  1.   

    服务器必须是有对外的端口,如果不行,就申请个VPN,加入虚拟局域网,不过那种是内部应用
      

  2.   

    还用户呢装个花生壳就可以解析你的路由获取的外网地址
    然后在路由上做端口映射 映射到你的机子  什么UDP TCP都有固定的端口(在路由上),指定到你的内网地址客户端:首先解析你花生壳的域名-》到你的路由-》你的机子
    你没有固定IP 花生壳是首选
      

  3.   


    是这样的。首先,当你发送消息给别人的时候,别人那里就能获取到你的Socket对象。并且当别人用你这个Socket对象发消息的时候,相当于回复消息,这时候你是可以收的到的。
    那么,如果两个位于内网的计算机在通信之前,都先发个消息给一个具有公网ip的服务器。那么这个时候,服务器就分别获取到了两个计算机的Socket对象,并且对任何一个对象做回复操作,那两台计算机都能收到消息。这个时候,如果服务端程序设定,计算机A发到服务器的消息,转发给计算机B的Socket对象,这样不就相当于A发送消息,而消息被B接受了么。如果发送频繁,那么可以通过序列化将该Socket对象分别发送给两台计算机。即:A获取B的Socket对象,B获取A的Socket对象。这样,A用B的对象发送,B就可以收到了。反之亦然。
      

  4.   

    如果没有固定IP,可以申请动态域名:如花生壳动态域名原理:每次你启动花生壳软件时,他都会到花生壳的网站登陆,即将你的目前上网的公网IP和你的帐号联系起来,也就是和你申请的动态域名联系起来,这样其他用户通过你的动态域名访问你的计算机时,花生壳的DNS服务器就会告诉他目前你的公网IP
    (注:TP-Link的新版路由器都内嵌了花生壳,不需要你的计算机再运行花生壳软件了)端口影射:一般情况下,外网用户只能访问有公网IP的计算机,如果使用路由器上网,则你的计算机是不具备公网IP的,但你的路由器是有公网IP的,这种情况下,就需要用到端口映射。
    原理:设置路由器的某个端口映射到本地内网某个IP的对应端口,那么,当外网用户连接这个端口的时候,路由器就起到中继转发的功能,把外网用户对该端口的操作都转发到对应IP的该端口上来。动态域名和端口映射对编程开发是不需要处理的,你就当是公网固定IP或是内网通讯就行了。内网用户访问公网IP时,因为他是主动端,所以是直接就可以的。内网用户访问内网,如果作为服务器端的内网用户的对应公网IP已知(固定IP或动态域名)且实现了端口映射,那么就和内网访问公网是一致的了如果还不懂,建议你补充基础知识。
      

  5.   

    你打开路由器管理,里面应该有一个DMZ管理(在某一个管理的子项,好像是路由管理)的,把你的机器内网IP写进去就可以了,别人访问你们内网的公网地址就会直接到你的PC上