关于socket的结构体地址的疑问
时间:2011-12-07
来源:互联网
大家好 我最近在学习mfc的socket编程
有个疑问
我用的是tcp/ip协议
前面定义了SOCKADDR_IN结构体存储地址
在使用 bind() accept() 和recvfrom() 这三个函数时都需要将SOCKADDR_IN 强制转换成SOCKADDR*
我的问题是 在上面三个函数中都要求给出 结构体长度 sizeof(SOCKADDR) 但是我理解是 虽然把指针定义为SOCKADDR类型
但是使用时还是SOCKADDR_IN的结构体 所以我都用sizeof(SOCKADDR_IN) 不知我理解的对不对
先谢谢大家了!!
有个疑问
我用的是tcp/ip协议
前面定义了SOCKADDR_IN结构体存储地址
在使用 bind() accept() 和recvfrom() 这三个函数时都需要将SOCKADDR_IN 强制转换成SOCKADDR*
我的问题是 在上面三个函数中都要求给出 结构体长度 sizeof(SOCKADDR) 但是我理解是 虽然把指针定义为SOCKADDR类型
但是使用时还是SOCKADDR_IN的结构体 所以我都用sizeof(SOCKADDR_IN) 不知我理解的对不对
先谢谢大家了!!
作者: CDERFV 发布时间: 2011-12-07
你可以查下MSDN,你会发现这两个结构体的长度是一样的
The Microsoft TCP/IP Sockets Developer's Kit only supports the Internet address domains. To actually fill in values for each part of an address, you use the SOCKADDR_IN data structure, which is specifically for this address format. The SOCKADDR and the SOCKADDR_IN data structures are the same size. You simply cast to switch between the two structure types.
The Microsoft TCP/IP Sockets Developer's Kit only supports the Internet address domains. To actually fill in values for each part of an address, you use the SOCKADDR_IN data structure, which is specifically for this address format. The SOCKADDR and the SOCKADDR_IN data structures are the same size. You simply cast to switch between the two structure types.
作者: wutaozhao 发布时间: 2011-12-07
引用楼主 cderfv 的回复:
大家好 我最近在学习mfc的socket编程
有个疑问
我用的是tcp/ip协议
前面定义了SOCKADDR_IN结构体存储地址
在使用 bind() accept() 和recvfrom() 这三个函数时都需要将SOCKADDR_IN 强制转换成SOCKADDR*
我的问题是 在上面三个函数中都要求给出 结构体长度 sizeof(SOCKADDR) 但是我理解是 虽然把指针定义……
大家好 我最近在学习mfc的socket编程
有个疑问
我用的是tcp/ip协议
前面定义了SOCKADDR_IN结构体存储地址
在使用 bind() accept() 和recvfrom() 这三个函数时都需要将SOCKADDR_IN 强制转换成SOCKADDR*
我的问题是 在上面三个函数中都要求给出 结构体长度 sizeof(SOCKADDR) 但是我理解是 虽然把指针定义……
bind() accept() 和recvfrom() 函数使用的是SOCKADDR类型的变量,所以应该用sizeof(SOCKADDR),
我们传递的首地址是SOCKADDR_IN类型变量的首地址,再加上长度sizeof(SOCKADDR),函数内部就当做SOCKADDR类型使用,这个时候我们只要保证(sizeof(SOCKADDR)《=sizeof(SOCKADDR_IN))就行了
作者: zhaoze87 发布时间: 2011-12-07
引用 1 楼 wutaozhao 的回复:
你可以查下MSDN,你会发现这两个结构体的长度是一样的
The Microsoft TCP/IP Sockets Developer's Kit only supports the Internet address domains. To actually fill in values for each part of an address, you use the SOCKADDR_IN da……
你可以查下MSDN,你会发现这两个结构体的长度是一样的
The Microsoft TCP/IP Sockets Developer's Kit only supports the Internet address domains. To actually fill in values for each part of an address, you use the SOCKADDR_IN da……
你好 我看了定义 这两个都是结构体SOCKADDR_IN 的长度却是比SOCKADDR大 前者有4个成员 后者有其中的2个 我不确定俩个结构体一样的?
作者: CDERFV 发布时间: 2011-12-07
引用 2 楼 zhaoze87 的回复:
引用楼主 cderfv 的回复:
大家好 我最近在学习mfc的socket编程
有个疑问
我用的是tcp/ip协议
前面定义了SOCKADDR_IN结构体存储地址
在使用 bind() accept() 和recvfrom() 这三个函数时都需要将SOCKADDR_IN 强制转换成SOCKADDR*
我的问题是 在上面三个函数中都要求给出 结构体长度 sizeof(SOCKADDR……
引用楼主 cderfv 的回复:
大家好 我最近在学习mfc的socket编程
有个疑问
我用的是tcp/ip协议
前面定义了SOCKADDR_IN结构体存储地址
在使用 bind() accept() 和recvfrom() 这三个函数时都需要将SOCKADDR_IN 强制转换成SOCKADDR*
我的问题是 在上面三个函数中都要求给出 结构体长度 sizeof(SOCKADDR……
你好 我刚又看了一下书 上面说用这个参数指定结构体的长度 那么必须是你实际的结构体
(sizeof(SOCKADDR)《=sizeof(SOCKADDR_IN))这个是什么意思 我比较笨没理解 呵呵
作者: CDERFV 发布时间: 2011-12-07
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28