有关IP获取和通信的问题,高手来看下
个人对于网络方面的了解仅限于原来看过的书本的某些理论,虽然也知道公网和内网的差别,但是说实话概念非常的模糊几天前心血来潮想写一个简单的网络文件发送来试试手,结果遇到了一个怎么也解决不了的问题,所以来请各位高手看一下TCPStartup()
msgbox(0,"用于得到自己的IP地址",TCPNameToIP(@ComputerName))以及#include <INet.au3>
_GetIP ( )这两种获取IP的方式有什么不同?
我用这两种IP得到了两个不同的IP地址,但是不论用哪个进行通信都不行。。。请问这是什么原因
多谢提醒,查了资料,过NAT会发生IP的转换,所以不能简单的进行通信
[ 本帖最后由 fhmily 于 2009-4-10 11:01 编辑 ] TCPNameToIP 是将域名转换为IP地址,不能用@ComputerName。
_GetIP 是获取本机的公网IP。 额,仔细看了一下,TCPNameToIP是可以用计算机名的,返回是的内网IP。 原帖由 sensel 于 2009-4-9 18:46 发表 http://www.autoitx.com/images/common/back.gif
额,仔细看了一下,TCPNameToIP是可以用计算机名的,返回是的内网IP。
我估计应该是
不过现在就有另外一个问题了,像这种内网和外网IP的机器,外部需要跟其通信的时候是连接到外网IP对么?
那天我试验的时候不论外面发送信息到哪个IP,我这里好像都无法接受到
情况这个怎么处理啊?有谁能给个例子么? ;SERVER!! Start Me First !!!!!!!!!!!!!!!
;这个是帮助文件里的例子
$g_IP = "127.0.0.1";把这里改成"0.0.0.0"
; Start The TCP Services
;==============================================
TCPStartUp()
; Create a Listening "SOCKET"
;==============================================
$MainSocket = TCPListen($g_IP, 65432,100 )
If $MainSocket = -1 Then Exit
;look for client connection
;--------------------
While 1
$ConnectedSocket = TCPAccept( $MainSocket)
If $ConnectedSocket >= 0 Then
msgbox(0,"","my server - Client Connected")
exit
EndIf
Wend
楼上的方法还是没有办法进行外网和内网的通信
连接端的code如下
;CLIENT!!!!!!!! Start SERVER First... dummy!!
#include <INet.au3>
$g_IP=_GetIP ( ) ;如果是内网地址@IPAddress1的话server端就会有反应
; Start The TCP Services
;==============================================
TCPStartUp()
; Connect to a Listening "SOCKET"
;==============================================
$socket = TCPConnect( $g_IP, 65432 )
If $socket = -1 Then Exit
TCPCloseSocket($socket)
网上查阅
防火墙&NAT
页:
[1]