dim clientIP as string
clientIP=socket1.RemoteHostIP  'socket1是一个winsocket,用为返回远程机器的IP

解决方案 »

  1.   

    1。最快的方法是读取winsock的“localIP属性”
    2。PING一个IP地址(向它发送一个数据包并等待回应)
     
    本例演示了怎样通过API的调用向一个IP地址发送一个包的数据并等待回音。新建一个工程,添加一个标准模块,写入以下代码:
    Option Explicit
    Public Const IP_STATUS_BASE = 11000Public Const IP_SUCCESS = 0Public Const IP_BUF_TOO_SMALL = (11000 + 1)Public Const IP_DEST_NET_UNREACHABLE = (11000 + 2)Public Const IP_DEST_HOST_UNREACHABLE = (11000 + 3)Public Const IP_DEST_PROT_UNREACHABLE = (11000 + 4)Public Const IP_DEST_PORT_UNREACHABLE = (11000 + 5)Public Const IP_NO_RESOURCES = (11000 + 6)Public Const IP_BAD_OPTION = (11000 + 7)Public Const IP_HW_ERROR = (11000 + 8)Public Const IP_PACKET_TOO_BIG = (11000 + 9)Public Const IP_REQ_TIMED_OUT = (11000 + 10)Public Const IP_BAD_REQ = (11000 + 11)Public Const IP_BAD_ROUTE = (11000 + 12)Public Const IP_TTL_EXPIRED_TRANSIT = (11000 + 13)Public Const IP_TTL_EXPIRED_REASSEM = (11000 + 14)Public Const IP_PARAM_PROBLEM = (11000 + 15)Public Const IP_SOURCE_QUENCH = (11000 + 16)Public Const IP_OPTION_TOO_BIG = (11000 + 17)Public Const IP_BAD_DESTINATION = (11000 + 18)Public Const IP_ADDR_DELETED = (11000 + 19)Public Const IP_SPEC_MTU_CHANGE = (11000 + 20)Public Const IP_MTU_CHANGE = (11000 + 21)Public Const IP_UNLOAD = (11000 + 22)Public Const IP_ADDR_ADDED = (11000 + 23)Public Const IP_GENERAL_FAILURE = (11000 + 50)Public Const MAX_IP_STATUS = 11000 + 50Public Const IP_PENDING = (11000 + 255)Public Const PING_TIMEOUT = 200Public Const WS_VERSION_REQD = &H101Public Const WS_VERSION_MAJOR = WS_VERSION_REQD \ &H100 And &HFF&Public Const WS_VERSION_MINOR = WS_VERSION_REQD And &HFF&Public Const MIN_SOCKETS_REQD = 1Public Const SOCKET_ERROR = -1
    Public Const MAX_WSADescription = 256Public Const MAX_WSASYSStatus = 128
    Public Type ICMP_OPTIONSTtl As ByteTos As ByteFlags As ByteOptionsSize As ByteOptionsData As LongEnd Type
    Dim ICMPOPT As ICMP_OPTIONS
    Public Type ICMP_ECHO_REPLYAddress As Longstatus As LongRoundTripTime As LongDataSize As IntegerReserved As IntegerDataPointer As LongOptions As ICMP_OPTIONSData As String * 250End Type
    Public Type HOSTENThName As LonghAliases As LonghAddrType As IntegerhLen As IntegerhAddrList As LongEnd Type
    Public Type WSADATAwVersion As IntegerwHighVersion As IntegerszDescription(0 To MAX_WSADescription) As ByteszSystemStatus(0 To MAX_WSASYSStatus) As BytewMaxSockets As IntegerwMaxUDPDG As IntegerdwVendorInfo As LongEnd Type
    Public Declare Function IcmpCreateFile Lib "icmp.dll" () As LongPublic Declare Function IcmpCloseHandle Lib "icmp.dll" (ByVal IcmpHandle As Long) As LongPublic Declare Function IcmpSendEcho Lib "icmp.dll" (ByVal IcmpHandle As Long, ByVal DestinationAddress As Long, ByVal RequestData As String, ByVal RequestSize As Integer, ByVal RequestOptions As Long, ReplyBuffer As ICMP_ECHO_REPLY, ByVal ReplySize As Long, ByVal Timeout As Long) As LongPublic Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As LongPublic Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal wVersionRequired As Long, lpWSADATA As WSADATA) As LongPublic Declare Function WSACleanup Lib "WSOCK32.DLL" () As LongPublic Declare Function gethostname Lib "WSOCK32.DLL" (ByVal szHost As String, ByVal dwHostLen As Long) As LongPublic Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal szHost As String) As LongPublic Declare Sub RtlMoveMemory Lib "kernel32" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)
    Public Function GetStatusCode(status As Long) As String
    Dim msg As String
    Select Case statusCase IP_SUCCESS: msg = "ip success"Case IP_BUF_TOO_SMALL: msg = "ip buf too_small"Case IP_DEST_NET_UNREACHABLE: msg = "ip dest net unreachable"Case IP_DEST_HOST_UNREACHABLE: msg = "ip dest host unreachable"Case IP_DEST_PROT_UNREACHABLE: msg = "ip dest prot unreachable"Case IP_DEST_PORT_UNREACHABLE: msg = "ip dest port unreachable"Case IP_NO_RESOURCES: msg = "ip no resources"Case IP_BAD_OPTION: msg = "ip bad option"Case IP_HW_ERROR: msg = "ip hw_error"Case IP_PACKET_TOO_BIG: msg = "ip packet too_big"Case IP_REQ_TIMED_OUT: msg = "ip req timed out"Case IP_BAD_REQ: msg = "ip bad req"Case IP_BAD_ROUTE: msg = "ip bad route"Case IP_TTL_EXPIRED_TRANSIT: msg = "ip ttl expired transit"Case IP_TTL_EXPIRED_REASSEM: msg = "ip ttl expired reassem"Case IP_PARAM_PROBLEM: msg = "ip param_problem"Case IP_SOURCE_QUENCH: msg = "ip source quench"Case IP_OPTION_TOO_BIG: msg = "ip option too_big"Case IP_BAD_DESTINATION: msg = "ip bad destination"Case IP_ADDR_DELETED: msg = "ip addr deleted"Case IP_SPEC_MTU_CHANGE: msg = "ip spec mtu change
      

  2.   

    如不知对方的计算机名,怎么ping