客户端代码如下:
Private Sub Form_Load()
  txtMSG.Locked = True
  txtMSG = ""
  txtSEND = ""
  With WSock1
   .Protocol = sckTCPProtocol
   .RemoteHost = "61.153.228.170"            ’外网IP地址,如果改为内网IP就可以了!
   .RemotePort = 1001
  End With
End SubPrivate Sub cmdConnect_Click()
    If WSock1.State <> sckClosed Then WSock1.Close
    WSock1.Connect
End Sub服务器端:
Private Sub Form_Load()
  txtMSG = "服务器端已经打开,正在监听端口......"
  With WSock1
   .Protocol = sckTCPProtocol
   .LocalPort = 1001
   .Listen
  End With
End SubPrivate Sub WSock1_ConnectionRequest(ByVal requestID As Long)
If WSock1.State <> sckClosed Then WSock1.Close
WSock1.Accept requestID
If WSock1.State = sckConnected Then     '返回信息
    msgbox "CONNECT"
Else
    msgbox "DISCONNECT"
End If
End Sub---------------------------------------------------各位大哥,这个怎么回事啊,对了,我保证只在自己的机器上开了服务器,也只有一个客户请求。
怎么会没有效果呢?!

解决方案 »

  1.   

    这是因为你所有内网机器的外网IP都是61.153.228.170,请问计算机怎么知道你是连接的哪一台计算机,如果你用内网IP,从内网看来,你们计算机的IP都是不同的,所以可以搞定.
    我现在也想解决这个问题!
      

  2.   

    服务器要动态添加sockete苏组,1个socket是不能解决服务器的问题的
      

  3.   

    不知道你这个外网ip是否可用
    也就是网外的计算机能否通过这个ip登陆上你的服务器?
    也就是说,你这个外网ip必须是实际上的外部ip
    如果是通过其他代理,你获取的就不是真正的外网ip,这是连不上的
      

  4.   

    ping 得通得外部ip才是真实得ip
      

  5.   

    从楼主的叙述来看,你的计算机位于一个局域网内,该网内每台计算机都有一个内网IP地址而且各不相同,在这个局域网内通讯时,服务器端RemoteHost设为内网IP当然可以。
    如果要用外网IP,那么服务器端和客户端都要有外网IP地址。而这个61.153.228.170,我估计是设置在路由器上的IP地址,反正肯定不是你这台计算机的独有的IP地址,这样客户端就无法寻址到你的计算机,当然无法连接了。
      

  6.   

    如果是通过局域网上网。不同局域的IP就像钱一样。
    在国内,你可以用人民币,无论那个省。都可以。
    可你到了法国人民币可能没人要了。
    你到法国去,你也就得通过银行,把人民币换成法郎。
    而银成就像路由器一样。局域网内每一台上网,你会发现。查得IP都是同一个。
      

  7.   

    是路由器设置的问题//
    建议一个“虚拟服务器”将局域网的服务向Internet开放.在使用该功能时,请确认需要开放的局域网服务器的IP地址以及应用端口.
    比如:
    我现在的ip是:192.168.18.100(内网)
    用Adsl上网后取得公网上的ip是:202.101.107.54
    建立一个 映射,然后开通机子上的ftp服务。
    现在你们都可以访问我的机子啦!
    Ftp://202.101.107.54 
    用户名:bbb
    密码:(空)
      

  8.   

    内网当然可以出去。但都是通过路由器中转过去。它把内网的IP 的端口,映射成一个公网IP也就是路由器的IP和路由器的一个端口。