怎样知道对方QQ的IP?

解决方案 »

  1.   

    使用UDP例:// Borland C++ Builder
    // Copyright (c) 1995, 2002 by Borland Software Corporation
    // All rights reserved// (DO NOT EDIT: machine generated header) 'IdUDPBase.pas' rev: 6.00#ifndef IdUDPBaseHPP
    #define IdUDPBaseHPP#pragma delphiheader begin
    #pragma option push -w-
    #pragma option push -Vx
    #include <IdSocketHandle.hpp> // Pascal unit
    #include <IdGlobal.hpp> // Pascal unit
    #include <IdException.hpp> // Pascal unit
    #include <IdComponent.hpp> // Pascal unit
    #include <Classes.hpp> // Pascal unit
    #include <SysInit.hpp> // Pascal unit
    #include <System.hpp> // Pascal unit//-- user supplied -----------------------------------------------------------namespace Idudpbase
    {
    //-- type declarations -------------------------------------------------------
    class DELPHICLASS TIdUDPBase;
    class PASCALIMPLEMENTATION TIdUDPBase : public Idcomponent::TIdComponent 
    {
    typedef Idcomponent::TIdComponent inherited;

    protected:
    Idsockethandle::TIdSocketHandle* FBinding;
    int FBufferSize;
    bool FDsgnActive;
    AnsiString FHost;
    int FPort;
    int FReceiveTimeout;
    bool FBroadcastEnabled;
    DYNAMIC void __fastcall BroadcastEnabledChanged(void);
    virtual void __fastcall CloseBinding(void);
    virtual bool __fastcall GetActive(void);
    void __fastcall SetActive(const bool Value);
    void __fastcall SetBroadcastFlag(const bool Enabled, Idsockethandle::TIdSocketHandle* ABinding = (Idsockethandle::TIdSocketHandle*)(0x0));
    void __fastcall SetBroadcastEnabled(const bool Value);
    virtual Idsockethandle::TIdSocketHandle* __fastcall GetBinding(void);
    virtual void __fastcall Loaded(void);

    public:
    __fastcall virtual TIdUDPBase(Classes::TComponent* AOwner);
    __fastcall virtual ~TIdUDPBase(void);
    __property Idsockethandle::TIdSocketHandle* Binding = {read=GetBinding};
    void __fastcall Broadcast(const AnsiString AData, const int APort);
    int __fastcall ReceiveBuffer(void *ABuffer, const int ABufferSize, const int AMSec = 0xffffffff)/* overload */;
    int __fastcall ReceiveBuffer(void *ABuffer, const int ABufferSize, AnsiString &VPeerIP, int &VPeerPort, int AMSec = 0xffffffff)/* overload */;
    AnsiString __fastcall ReceiveString(const int AMSec = 0xffffffff)/* overload */;
    AnsiString __fastcall ReceiveString(AnsiString &VPeerIP, int &VPeerPort, const int AMSec = 0xffffffff)/* overload */;
    void __fastcall Send(AnsiString AHost, const int APort, const AnsiString AData);
    void __fastcall SendBuffer(AnsiString AHost, const int APort, void *ABuffer, const int AByteCount);
    __property int ReceiveTimeout = {read=FReceiveTimeout, write=FReceiveTimeout, default=-2};

    __published:
    __property bool Active = {read=GetActive, write=SetActive, default=0};
    __property int BufferSize = {read=FBufferSize, write=FBufferSize, default=8192};
    __property bool BroadcastEnabled = {read=FBroadcastEnabled, write=SetBroadcastEnabled, default=0};
    };
    class DELPHICLASS EIdUDPException;
    class PASCALIMPLEMENTATION EIdUDPException : public Idexception::EIdException 
    {
    typedef Idexception::EIdException inherited;

    public:
    #pragma option push -w-inl
    /* Exception.Create */ inline __fastcall EIdUDPException(const AnsiString Msg) : Idexception::EIdException(Msg) { }
    #pragma option pop
    #pragma option push -w-inl
    /* Exception.CreateFmt */ inline __fastcall EIdUDPException(const AnsiString Msg, const System::TVarRec * Args, const int Args_Size) : Idexception::EIdException(Msg, Args, Args_Size) { }
    #pragma option pop
    #pragma option push -w-inl
    /* Exception.CreateRes */ inline __fastcall EIdUDPException(int Ident)/* overload */ : Idexception::EIdException(Ident) { }
    #pragma option pop
    #pragma option push -w-inl
    /* Exception.CreateResFmt */ inline __fastcall EIdUDPException(int Ident, const System::TVarRec * Args, const int Args_Size)/* overload */ : Idexception::EIdException(Ident, Args, Args_Size) { }
    #pragma option pop
    #pragma option push -w-inl
    /* Exception.CreateHelp */ inline __fastcall EIdUDPException(const AnsiString Msg, int AHelpContext) : Idexception::EIdException(Msg, AHelpContext) { }
    #pragma option pop
    #pragma option push -w-inl
    /* Exception.CreateFmtHelp */ inline __fastcall EIdUDPException(const AnsiString Msg, const System::TVarRec * Args, const int Args_Size, int AHelpContext) : Idexception::EIdException(Msg, Args, Args_Size, AHelpContext) { }
    #pragma option pop
    #pragma option push -w-inl
    /* Exception.CreateResHelp */ inline __fastcall EIdUDPException(int Ident, int AHelpContext)/* overload */ : Idexception::EIdException(Ident, AHelpContext) { }
    #pragma option pop
    #pragma option push -w-inl
    /* Exception.CreateResFmtHelp */ inline __fastcall EIdUDPException(System::PResStringRec ResStringRec, const System::TVarRec * Args, const int Args_Size, int AHelpContext)/* overload */ : Idexception::EIdException(ResStringRec, Args, Args_Size, AHelpContext) { }
    #pragma option pop

    public:
    #pragma option push -w-inl
    /* TObject.Destroy */ inline __fastcall virtual ~EIdUDPException(void) { }
    #pragma option pop

    };
    class DELPHICLASS EIdUDPReceiveErrorZeroBytes;
    class PASCALIMPLEMENTATION EIdUDPReceiveErrorZeroBytes : public EIdUDPException 
    {
    typedef EIdUDPException inherited;

    public:
    #pragma option push -w-inl
    /* Exception.Create */ inline __fastcall EIdUDPReceiveErrorZeroBytes(const AnsiString Msg) : EIdUDPException(Msg) { }
    #pragma option pop
    #pragma option push -w-inl
    /* Exception.CreateFmt */ inline __fastcall EIdUDPReceiveErrorZeroBytes(const AnsiString Msg, const System::TVarRec * Args, const int Args_Size) : EIdUDPException(Msg, Args, Args_Size) { }
    #pragma option pop
    #pragma option push -w-inl
    /* Exception.CreateRes */ inline __fastcall EIdUDPReceiveErrorZeroBytes(int Ident)/* overload */ : EIdUDPException(Ident) { }
    #pragma option pop
    #pragma option push -w-inl
    /* Exception.CreateResFmt */ inline __fastcall EIdUDPReceiveErrorZeroBytes(int Ident, const System::TVarRec * Args, const int Args_Size)/* overload */ : EIdUDPException(Ident, Args, Args_Size) { }
    #pragma option pop
    #pragma option push -w-inl
    /* Exception.CreateHelp */ inline __fastcall EIdUDPReceiveErrorZeroBytes(const AnsiString Msg, int AHelpContext) : EIdUDPException(Msg, AHelpContext) { }
    #pragma option pop
    #pragma option push -w-inl
    /* Exception.CreateFmtHelp */ inline __fastcall EIdUDPReceiveErrorZeroBytes(const AnsiString Msg, const System::TVarRec * Args, const int Args_Size, int AHelpContext) : EIdUDPException(Msg, Args, Args_Size, AHelpContext) { }
    #pragma option pop
    #pragma option push -w-inl
    /* Exception.CreateResHelp */ inline __fastcall EIdUDPReceiveErrorZeroBytes(int Ident, int AHelpContext)/* overload */ : EIdUDPException(Ident, AHelpContext) { }
    #pragma option pop
    #pragma option push -w-inl
    /* Exception.CreateResFmtHelp */ inline __fastcall EIdUDPReceiveErrorZeroBytes(System::PResStringRec ResStringRec, const System::TVarRec * Args, const int Args_Size, int AHelpContext)/* overload */ : EIdUDPException(ResStringRec, Args, Args_Size, AHelpContext) { }
    #pragma option pop

    public:
    #pragma option push -w-inl
    /* TObject.Destroy */ inline __fastcall virtual ~EIdUDPReceiveErrorZeroBytes(void) { }
    #pragma option pop

    };
    //-- var, const, procedure ---------------------------------------------------
    static const Word ID_UDP_BUFFERSIZE = 0x2000;} /* namespace Idudpbase */
    using namespace Idudpbase;
    #pragma option pop // -w-
    #pragma option pop // -Vx#pragma delphiheader end.
    //-- end unit ----------------------------------------------------------------
    #endif // IdUDPBase