|
|
Tetris的趋势竞赛 获取网络所有包的信息的例子中这个函数
- inline static int __proc_ip_packet(const void *ip, size_t len,
- struct ippacket *packet)
- {
- unsigned char version;
-
- if (len > 0)
- {
- version = *(unsigned char *)ip >> 4;
- if (version == 4)
- return __proc_ip4_packet((const struct ip *)ip, len, packet);
- #ifdef IPV6
- else if (version == 6)
- return __proc_ip6_packet((const struct ip6_hdr *)ip, len, packet);
- #endif
- else
- errno = EAFNOSUPPORT;
- }
- else
- errno = EBADMSG;
-
- return -1;
- }
复制代码
version = *(unsigned char *)ip >> 4;
作用是获得version
但是哪位能详细讲解一下*(unsigned char *)ip 是什么意思
他的起点是 传入的第一个参数的起始位置吗
左移4位是什么意思
我看tcp/ip上 ip数据包的格式
包头第一位就是 ip_v 为什么要 <<4呢
对网络编程深入的真是不明白
现在才知道 自己以前的
socket bind listen accept..........是很表面的东西 |
|