fhmily 发表于 2009-4-9 15:52:00

有关IP获取和通信的问题,高手来看下

个人对于网络方面的了解仅限于原来看过的书本的某些理论,虽然也知道公网和内网的差别,但是说实话概念非常的模糊

几天前心血来潮想写一个简单的网络文件发送来试试手,结果遇到了一个怎么也解决不了的问题,所以来请各位高手看一下TCPStartup()
msgbox(0,"用于得到自己的IP地址",TCPNameToIP(@ComputerName))以及#include <INet.au3>
_GetIP ( )这两种获取IP的方式有什么不同?

我用这两种IP得到了两个不同的IP地址,但是不论用哪个进行通信都不行。。。请问这是什么原因

多谢提醒,查了资料,过NAT会发生IP的转换,所以不能简单的进行通信

[ 本帖最后由 fhmily 于 2009-4-10 11:01 编辑 ]

sensel 发表于 2009-4-9 18:44:22

TCPNameToIP 是将域名转换为IP地址,不能用@ComputerName。
_GetIP 是获取本机的公网IP。

sensel 发表于 2009-4-9 18:46:55

额,仔细看了一下,TCPNameToIP是可以用计算机名的,返回是的内网IP。

fhmily 发表于 2009-4-9 19:03:19

原帖由 sensel 于 2009-4-9 18:46 发表 http://www.autoitx.com/images/common/back.gif
额,仔细看了一下,TCPNameToIP是可以用计算机名的,返回是的内网IP。

我估计应该是

不过现在就有另外一个问题了,像这种内网和外网IP的机器,外部需要跟其通信的时候是连接到外网IP对么?

那天我试验的时候不论外面发送信息到哪个IP,我这里好像都无法接受到

情况这个怎么处理啊?有谁能给个例子么?

akmm88 发表于 2009-4-9 19:46:41

;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

fhmily 发表于 2009-4-9 20:52:59

楼上的方法还是没有办法进行外网和内网的通信

连接端的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)

ceoguang 发表于 2009-4-9 23:40:29

网上查阅
防火墙&NAT
页: [1]
查看完整版本: 有关IP获取和通信的问题,高手来看下