首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

accept怎么知道接受的是IPv4连接还是IPv6的

2012-03-31 
accept如何知道接受的是IPv4连接还是IPv6的?我想使用accept的后两个参数来得到接受的连接的IP地址该怎么传

accept如何知道接受的是IPv4连接还是IPv6的?
我想使用accept的后两个参数来得到接受的连接的IP地址
该怎么传参数?
能不能实现是IPv6就得到的是IPv6地址,IPv4就是IPv4
比如说传一个类似与sockaddr的结构,有一个字段来指明协议类型?

[解决办法]
如果能够解析IP包头就知道了,有个版本号

格式
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| 版本 | 传输类别 | 数据流标签 | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| 有效载荷长度 | 下一个首部 | 跳数限制 | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
+ 源 地 址 + 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
+ 目 的 地 址 + 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 

版本占4 比特
IPV6 协议号 = 6
[解决办法]
v4:socket(AF_INET, ...)
v6: socket(AF_INET6, ...)

IPv4和v6的包头不同
不能混用

热点排行