真心求解释下:下面的宏定义和创建Socket是什么关系,求真心耐心细致的你,谢谢!

jyzdtn 2011-01-10 10:57:02
#define INVALID_SOCKET (SOCKET)(~0)
#define SOCKET_ERROR (-1)

最好先解释下这个宏,完全看不懂!尤其是(~0)

//创建Socket
m_unSocket = socket(AF_INET, SOCK_STREAM, 0);
if (INVALID_SOCKET == m_unSocket)
{
strncpy_s(m_pszErrorDescription,_countof(m_pszErrorDescription), "Communicate::ConnectToServer Create socket fail !", MAX_ERROR_DESCRIPTION);
return false;
}
...全文
135 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2011-11-24
  • 打赏
  • 举报
回复
#define INVALID_SOCKET (SOCKET)(~0)

各位大侠,怎么解释这个数据类型转换?
nicklisir 2011-01-10
  • 打赏
  • 举报
回复
找下非0就知道了,在不同的环境,最大数不一样;非0就是得到最大数。。。。
Michael_g 2011-01-10
  • 打赏
  • 举报
回复
m_unSocket = socket(AF_INET, SOCK_STREAM, 0);
//这句应该 是创建一个socket,然后将socket 句柄保存到m_unSocket
if (INVALID_SOCKET == m_unSocket)
//判断是否创建成功,如果不成功则进行该if块,然后打印出错误信息。
{
strncpy_s(m_pszErrorDescription,_countof(m_pszErrorDescription), "Communicate::ConnectToServer Create socket fail !", MAX_ERROR_DESCRIPTION);
return false;
}
jyzdtn 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 michael_g 的回复:]
#define INVALID_SOCKET (SOCKET)(~0)
其中(SOCKET) 是数据强转
(~0) 是取0的反数,也就是 0xFFFFFFFF

#define SOCKET_ERROR (-1)
就是定义 SOCKET_ERROR 为 -1
[/Quote]
下面的创建部分也可以讲讲吗?
if (INVALID_SOCKET == m_unSocket)
这个判断是什么意图呢
Michael_g 2011-01-10
  • 打赏
  • 举报
回复
#define INVALID_SOCKET (SOCKET)(~0)
其中(SOCKET) 是数据强转
(~0) 是取0的反数,也就是 0xFFFFFFFF

#define SOCKET_ERROR (-1)
就是定义 SOCKET_ERROR 为 -1
  • 打赏
  • 举报
回复
先看看 位操作...
就知道~0啥意思了

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧