typedef struct _IPHeader
{
unsigned char ip_header_len:4;
unsigned char ip_version :4;
unsigned char ip_tos;
unsigned short ip_total_length;
unsigned short ip_id;
unsigned short ip_frag_offset;
unsigned char ip_ttl;
unsigned char ip_protocol;
unsigned short ip_checksum;
unsigned int ip_srcaddr;
unsigned int ip_destaddr;
} IPHeader;
typedef struct tcp_hdr
{
unsigned short source_port;
unsigned short dest_port;
unsigned short udp_length;
unsigned short udp_checksum;
} tcp_HDR;typedef struct tcppacket
{
TCP_HDR tcp;
char messg[35];
} TCP_PACKET;void main()
{
IPHeader *ip;
TCP_PACKET *tcp_pack = (TCP_PACKET *) (ip + 1);
int tcp_hdr_n_data_len = sizeof(*tcp_pack);
packet_length = ((int)(ip + 1) - (int)ip) + tcp_hdr_n_data_len;}
请问TCP_PACKET *tcp_pack = (TCP_PACKET *) (ip + 1);和((int)(ip + 1) - (int)ip)是什么意思
{
unsigned char ip_header_len:4;
unsigned char ip_version :4;
unsigned char ip_tos;
unsigned short ip_total_length;
unsigned short ip_id;
unsigned short ip_frag_offset;
unsigned char ip_ttl;
unsigned char ip_protocol;
unsigned short ip_checksum;
unsigned int ip_srcaddr;
unsigned int ip_destaddr;
} IPHeader;
typedef struct tcp_hdr
{
unsigned short source_port;
unsigned short dest_port;
unsigned short udp_length;
unsigned short udp_checksum;
} tcp_HDR;typedef struct tcppacket
{
TCP_HDR tcp;
char messg[35];
} TCP_PACKET;void main()
{
IPHeader *ip;
TCP_PACKET *tcp_pack = (TCP_PACKET *) (ip + 1);
int tcp_hdr_n_data_len = sizeof(*tcp_pack);
packet_length = ((int)(ip + 1) - (int)ip) + tcp_hdr_n_data_len;}
请问TCP_PACKET *tcp_pack = (TCP_PACKET *) (ip + 1);和((int)(ip + 1) - (int)ip)是什么意思
解决方案 »
- 求一个从txt文件中读取数据,在vc中画线的demo或者代码
- 各位大虾,请教一个关于lisctrl的表头显示问题,谢谢
- 做了一个虚拟键盘鼠标的驱动,感兴趣的可以去download.
- 请教一个将数据在CListCtrl的逐行显示问题
- BeginPaint的问题 既然他只是画一个区域的内容 ,能不能获得 PAINTSTRUCT的内容来定制代码 而不是整个的输出??否则很多代码不就是浪费
- 哪里可以下载到windows Graphics programming
- 请教锁变量的方法
- COM高手,据说VC编写的COM有一些致命伤,Microsoft在.net中用新的组件方式代替COM,谁能将其中的详细情况说一下?
- 关于mfc控件CTreeCtrl问题
- 怎样将整形、字节型转换成字符串??
- [求助]如何定制模式对话框中某个控件的内容或窗口的名称,然后再显示出来……
- 在C语言的程序当中如何加入一个类库的内容呢?
IPHeader *ip; 这里又没有分配空间谁知道ip+1会指向哪里
(TCP_PACKET *) (ip + 1)指向哪里也是未知的
((int)(ip + 1) - (int)ip)是IPHeader这个结构体的一个变量在内存中的大小,单位是字节不一定对,仅供参考
TCP_PACKET *tcp_pack = (TCP_PACKET *) (ip + 1);将ip + 1 的值转换成TCP_PACKET型赋给tcp_pack,这里ip + 1也是ip加上1楼所说的常数。
((int)(ip + 1) - (int)ip) 中 ip + 1和ip都是指针,指针就是整数,但是直接使用可能会产生警告。