vb.net外网ip vbnet http服务器

vb.net socket.bind 是不是只能绑定本地的IP 不能用外网IP?不是这样的vb.net外网ip,它绑定vb.net外网ip你给它的IP (不分内外网),如果你的程序在服务器端(服务器必须有一个固定的IP)运行,你的代码读取本机IP时 就是那个固定IPvb.net外网ip了,当你的程序在动态DNS网络里运行时,读取的就是内网IP了,只有网络内的客户机才能连上,你用个办法查出外网IP,直接给vb.net socket.bind , 外网的人才能连接到你的 电脑 , 希望能帮到你
vb 如何获取外网ip?vb中从域名得到IP及从IP得到域名
Private Const WS_VERSION_REQD = H101
Private Const WS_VERSION_MAJOR = WS_VERSION_REQD H100 And HFF
Private Const WS_VERSION_MINOR = WS_VERSION_REQD And HFF
【vb.net外网ip vbnet http服务器】Private Const MIN_SOCKETS_REQD = 1
Private Const SOCKET_ERROR = -1
Private Const WSADescription_Len = 256
Private Const WSASYS_Status_Len = 128
Private Type HOSTENT
hname As Long
hAliases As Long
hAddrType As Integer
hLength As Integer
hAddrList As Long
End Type
Private Type WSADATA
wversion As Integer
wHighVersion As Integer
szDescription(0 To WSADescription_Len) As Byte
szSystemStatus(0 To WSASYS_Status_Len) As Byte
iMaxSockets As Integer
iMaxUdpDg As Integer
lpszVendorInfo As Long
End Type
Private Declare Function gethostbyaddr Lib "WSOCK32.DLL" (addr As Any, ByVal _
byteslen As Integer, addrtype As Integer) As Long
Private Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long
Private Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal _
wVersionRequired, lpWSAData As WSADATA) As Long
Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long
Private Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal _
hostname$) As Long
Private Declare Sub RtlMoveMemory Lib "KERNEL32" (hpvDest As Any, _
ByVal hpvSource, ByVal cbCopy)
Function hibyte(ByVal wParam As Integer)注释:获得整数的高位
hibyte = wParam H100 And HFF
End Function
Function lobyte(ByVal wParam As Integer)注释:获得整数的低位
lobyte = wParam And HFF
End Function
Function SocketsInitialize()
Dim WSAD As WSADATA
Dim iReturn As Integer
Dim sLowByte As String, sHighByte As String, sMsg As String
iReturn = WSAStartup(WS_VERSION_REQD, WSAD)
If iReturn0 Then
MsgBox "Winsock.dll 没有反应."
End
End If
If lobyte(WSAD.wversion)WS_VERSION_MAJOR Or (lobyte(WSAD.wversion) = WS_VERSION_MAJOR And hibyte(WSAD.wversion)WS_VERSION_MINOR) Then
sHighByte = Trim$(str$(hibyte(WSAD.wversion)))
sLowByte = Trim$(str$(lobyte(WSAD.wversion)))
sMsg = "Windows Sockets版本 "sLowByte"."sHighByte
sMsg = sMsg" 不被winsock.dll支持 "
MsgBox sMsg
End
End If
If WSAD.iMaxSocketsMIN_SOCKETS_REQD Then
sMsg = "这个系统需要的最少Sockets数为 "
sMsg = sMsgTrim$(str$(MIN_SOCKETS_REQD))
MsgBox sMsg
End
End If
End Function
Sub SocketsCleanup()
Dim lReturn As Long
lReturn = WSACleanup()
If lReturn0 Then
MsgBox "Socket错误 "Trim$(str$(lReturn))" occurred in Cleanup "
End
End If
End Sub
Sub Form_Load()
注释:初始化Socket
SocketsInitialize
End Sub
Private Sub Form_Unload(Cancel As Integer)
注释:清除Socket
SocketsCleanup
End Sub
Private Function getip(name As String) As String
Dim hostent_addr As Long
Dim host As HOSTENT
Dim hostip_addr As Long
Dim temp_ip_address() As Byte
Dim i As Integer
Dim ip_address As String
hostent_addr = gethostbyname(name)
If hostent_addr = 0 Then
getip = ""注释:主机名不能被解释

推荐阅读