SOCKET API简介三(
2012-06-13 17:17
218 查看
);
inet_addr返回的是32位的网络字节序的二进制值, 这个函数存在这样的问题,所有2^32可能的二进制都是有效的IP地址(0.0.0.0到255.255.255.255) 但当出错时返回一个常值
INADDR_NONE(#define INADDR_NONE 0xffffffff),这意味着255.255.255.255不能由此函数处理,
可以这样使用:
m_szServerAddr = "255.255.0.1"; ULONG inaddr = inet_addr(m_szServerAddr); if (inaddr == INADDR_NONE) {
inaddr返回的是100FFFF
struct hostent FAR * WSAAPI gethostbyname( __in const char FAR * name );
此函数用于查找主机名,如果成功,它返回一个指向结构hostent的指针,该结构中包含了该主机的所有IPv4地址或IPv6地址
localhost 指你所在的计算机本身,所以要查找本机信息,可以这样使用:
hostent *Localhost = NULL; Localhost = gethostbyname("LocalHost");unsigned long WSAAPI inet_addr( __in IN const char FAR * cp );
int WSAAPI getpeername( IN SOCKET s, __out_bcount_part(*namelen,*namelen) struct sockaddr FAR * name, __inout int FAR * namelen );
返回与套接口关联的远程协议地址.客户端可以用它来获取当前socket连接的服务器IP和端口,如:
SOCKADDR_IN sin; sin.sin_family = AF_INET; sin.sin_port = htons(8188); memcpy(&sin.sin_addr, &inaddr, sizeof(inaddr)); m_socket = socket(AF_INET, SOCK_STREAM, 0); if (INVALID_SOCKET == m_socket) { m_szLastErr = _T("创建套接字失败"); return FALSE; } if (connect(m_socket, (sockaddr*)&sin, sizeof(SOCKADDR_IN))<0)
这样创建一个socket,我们再去查询这个socket对应的服务器地址:
SOCKADDR_IN sin; int nLen = sizeof(sin); getpeername(pPara->socket, (sockaddr*)&sin, &nLen);
得到的sin和上面connect 时的sin是一样的。
相关文章推荐
- Linux C下socket编程API简介
- Socket套接字API简介
- Linux下的socket编程实践(二)socket编程基本API简介
- socket编程及API简介
- Linux下的socket编程实践(二)socket编程基本API简介
- SOCKET API简介三(
- Java API For WebSocket(一)简介
- 计算机网络-socket简介
- SocketAPI,CAsyncSocket,CSocket比较说明及其用法
- 处理JSON的Java API :JSON的简介
- AOP联盟的API简介
- HTML5 API ---WebAudio API与audio元素简介
- 〔转〕PHP和Socket简介
- Windows DLL注入和API拦截简介
- 转载:Windows Socket API 使用经验
- Android SurfaceView(一:API简介)
- Promise API 简介
- socket通信简介
- HTML5的一个显示电池状态的API简介
- http和socket简介