⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 socketutils.h

📁 跨操作系统的微型中间件
💻 H
字号:
/*    File:       SocketUtils.h    Contains:   Some static routines for dealing with networking                    */#ifndef __SOCKETUTILS_H__#define __SOCKETUTILS_H__#ifndef __Win32__#include <sys/socket.h>#include <netinet/in.h>#include <net/if.h>#endif#include "OSHeaders.h"#include "MyAssert.h"#include "StrPtrLen.h"#include <string>class SocketUtils{    public:        // Call initialize before using any socket functions.        // (pass true for lookupDNSName if you want the hostname        // looked up via DNS during initialization -- %%sfu)        static void Initialize(Bool lookupDNSName = true);
		static void Uninitialize();                //static utility routines        static Bool   IsMulticastIPAddr(UInt32 inAddress);        static Bool   IsLocalIPAddr(UInt32 inAddress);		static Bool	GetPeerInfo(Int32 vFD, std::string &vIP, UInt16 &vPort);        //This function converts an integer IP address to a dotted-decimal string.        static void ConvertAddrToString(const struct in_addr& theAddr, std::string* outAddr);                // This function converts a dotted-decimal string IP address to a UInt32        static UInt32 ConvertStringToAddr(const char* inAddr);                //You can get at all the IP addrs and DNS names on this machine this way        static UInt32				GetNumIPAddrs() { return sNumIPAddrs; }        static inline UInt32        GetIPAddr(UInt32 inAddrIndex);

		//DNS: return----host-ordered int IP
		static UInt32	HostNameToIP(const std::string& strHostName);
		static std::string	HostNameToStringIP(const std::string& strHostName);
		
		//convet Int IP to string IP
		static std::string IPAddrToString(unsigned long nIpAddr);

				private:		friend class Socket;        static inline StrPtrLen*    GetIPAddrStr(UInt32 inAddrIndex);        static inline StrPtrLen*    GetDNSNameStr(UInt32 inDNSIndex);                private:        //Utility function used by Initialize#ifndef __Win32__        static Bool IncrementIfReqIter(char** inIfReqIter, ifreq* ifr);#endif        //For storing relevent information about each IP interface        struct IPAddrInfo        {            UInt32      fIPAddr;            StrPtrLen   fIPAddrStr;            StrPtrLen   fDNSNameStr;        };                static IPAddrInfo*              sIPAddrInfoArray;        static UInt32                   sNumIPAddrs;};inline UInt32   SocketUtils::GetIPAddr(UInt32 inAddrIndex){    Assert(sIPAddrInfoArray != NULL);    Assert(inAddrIndex < sNumIPAddrs);    return sIPAddrInfoArray[inAddrIndex].fIPAddr;}inline StrPtrLen*   SocketUtils::GetIPAddrStr(UInt32 inAddrIndex){    Assert(sIPAddrInfoArray != NULL);    Assert(inAddrIndex < sNumIPAddrs);    return &sIPAddrInfoArray[inAddrIndex].fIPAddrStr;}inline StrPtrLen*   SocketUtils::GetDNSNameStr(UInt32 inDNSIndex){    Assert(sIPAddrInfoArray != NULL);    Assert(inDNSIndex < sNumIPAddrs);    return &sIPAddrInfoArray[inDNSIndex].fDNSNameStr;}#endif // __SOCKETUTILS_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -