C:“tcp_seq”之前的预期说明符限定符列表

在我的头文件预计符限定符列表前€~tcp_seq’:我不断收到此错误。

这里是头文件:

#include <netinet/ip.h> /* TCP header */ struct sniff_tcp { u_short th_sport; /* source port */ u_short th_dport; /* destination port */ tcp_seq th_seq; /* sequence number */ tcp_seq th_ack; /* acknowledgement number */ #if BYTE_ORDER == LITTLE_ENDIAN u_int th_x2:4, /* (unused) */ th_off:4; /* data offset */ #endif #if BYTE_ORDER == BIG_ENDIAN u_int th_off:4, /* data offset */ th_x2:4; /* (unused) */ #endif u_char th_flags; #define TH_FIN 0x01 #define TH_SYN 0x02 #define TH_RST 0x04 #define TH_PUSH 0x08 #define TH_ACK 0x10 #define TH_URG 0x20 #define TH_ECE 0x40 #define TH_CWR 0x80 #define TH_FLAGS (TH_FIN|TH_SYN|TH_RST|TH_ACK|TH_URG|TH_ECE|TH_CWR) u_short th_win; /* window */ u_short th; /* checksum */ u_short th_urp; /* urgent pointer */ }; /* Ethernet header */ struct sniff_ethernet { u_char ether_dhost[ETHER_ADDR_LEN]; /* Destination host address */ u_char ether_shost[ETHER_ADDR_LEN]; /* Source host address */ u_short ether_type; /* IP? ARP? RARP? etc */ }; /* IP header */ struct sniff_ip { #if BYTE_ORDER == LITTLE_ENDIAN u_int ip_hl:4, /* header length */ ip_v:4; /* version */ #if BYTE_ORDER == BIG_ENDIAN u_int ip_v:4, /* version */ ip_hl:4; /* header length */ #endif #endif /* not _IP_VHL */ u_char ip_tos; /* type of service */ u_short ip_len; /* total length */ u_short ip_id; /* identification */ u_short ip_off; /* fragment offset field */ #define IP_RF 0x8000 /* reserved fragment flag */ #define IP_DF 0x4000 /* dont fragment flag */ #define IP_MF 0x2000 /* more fragments flag */ #define IP_OFFMASK 0x1fff /* mask for fragmenting bits */ u_char ip_ttl; /* time to live */ u_char ip_p; /* protocol */ u_short ip_sum; /* checksum */ struct in_addr ip_src,ip_dst; /* source and dest address */ };

我不能得到它的底部,即使谷歌。

我希望有人有一些建议。

提前谢谢了,

--------------解决方案-------------

貌似复制复制tcphdr从结构netinet/tcp.h

您收到错误消息只是说,一个复杂的方式tcp_seq类型是不知道。 对我来说,这是通过定义netinet/tcp.h ,如果预处理器宏__FAVOR_BSD定义。

或者,你可以只使用u_long或任何其他32位无符号整数类型。

分类:C# 时间:2012-01-01 人气:1
本文关键词: TCP,libpcap的
分享到:

相关文章

  • 如何使用libpcap的原始数据包的TCP头打印标志 2013-02-27

    sniffex.c是一个基于libpcap的,嗅和显示一些数据包信息的程序. 我要如何修改,以便打印值TCP标志 - URG,ACK,PSH,RST,SYN和FIN? 请帮忙.. --------------解决方案------------- 如果选中该代码,其中sniff_tcp时,请务必打印出* th_flags *这种结构,则为你需要的标志成员. /* TCP header */ struct sniff_tcp { u_short th_sport; /* source port */

  • 可以的libpcap重新组装的TCP段 2013-05-05

    我需要嗅探TCP流量转化为我的申请. 可以libpcap的重组TCP报文段或我必须做手工? 主页说:"完整的文档设置有手册页格式的源码包". 之后,我sudo apt-get install libpcap-dev我只能找一个人PCAP. 是不是所有的文档用或我只是错过了什么? 谢谢 --------------解决方案------------- 分组或流重组没有在PCAP上述(3). 如果我没有记错,在dsniff工具使用libnids重新组合的IP数据包和TCP流. 三年前,我用l

  • 什么是TCP / IP模型和TCP / IP协议栈之间的libpcap和疏导和插座之间的探源? 2014-04-03

    我发现这个形象从 : 问题: 是否TCP / IP堆栈装置上右侧的4层(不包括硬件层)? 据我了解libpcap的差异性之探源和转移承插它们都是原始套接字,但与libpcap的你可以闻嗅,而与转接插座可以绕路而甩掉他们,对吗? --------------解决方案------------- TCP协议栈是在青色的部件或多或少相当于 是的,你也可以改变(注数据)

  • 数据包嗅探在Linux中不使用libpcap的 2012-04-06

    我一直在考虑一个项目,其中包括编写一个数据包嗅探器,可以捕获和识别的IPv4,IPv6的TCP,UDP,IP,ICMP数据包等,并显示其内容的课程在大学(网络工程). 本来我们是针对使用libpcap的做到这一点,但我们刚刚被那所大学的技术人员之一获悉,这是不可能使用libpcap的当前安装(Arch Linux的). 还有什么其他的方法是否有在C不使用libpcap的创建一个数据包嗅探器? 我不要求回答这个项目,我只是要求的方向,我应该在哪里开始呢? --------------解决方案---

  • TCP / IP的编程,在一个以上的分组数据 2012-05-13

    我写一个应用程序在C,使用libpcap的. 我的程序侦听新的数据包,并根据语法分析它们. 有效载荷实际上是XML. 有时一个分组是不足够的XML文件,因此XML缓冲器分裂成单独的数据包. 我想添加代码逻辑,以处理这种情况. 不过,我事先不知道做一个数据包不包含整个数据. 我如何知道一个分组将在下一个发送更多的数据? 如何我认识到,一个新的数据包中包含数据的休息吗? 我一定要使用TH_FIN标志? 能否请您解释一下? --------------解决方案------------- 没有什么TCP

  • 使用PHP可用的API读取TCP套接字的序列号? 2012-06-10

    做任何的API提供PHP让我从一个TCP套接字的TCP状态机的当前序列号看? --------------解决方案------------- (据我所知)号 这就需要访问TCP头,它没有基于套接字的扩展(插座或流)将提供访问. SOCK_STREAM只提供数据有效载荷,它不会(再次,据我所知)让您获取有关流的低水平内部工作的任何信息-因为,从理论上讲,你应该不需要担心. 它可能(?)可以实现使用TCP流SOCK_RAW ,在这种情况下, 你很可能可以访问这些信息,但我不是甚至100%的信心有关,

  • Jnetpcap,准备UDP / TCP / IP / ICMP数据包 2012-07-02

    最近,我使用Jnetpcap发送/通过网络接收原始数据包. Jnetpcap提供了发送数据包Pcap.sendPacket() 这种方法获取原始缓冲区或字节发送. 在另一方面,有org.jnetpcap.protocol.*类,它封装协议头,我们可以用它们来捕获的数据包进行解码. 当我使用下面的代码做一个Ip4包,它会导致NullPointerException异常: import org.jnetpcap.protocol.network.Ip4; public class Test { pu

  • Java的TCP套接字嗅探 2012-07-04

    我使用的TCP套接字进行通信使用同一台计算机(本地主机)上的特定端口号在服务器和客户端程序之间的数据. 我需要一个可以捕获正在发送的数据的软件/通过该套接字接受? (要么) 什么是从Java中的指定端口的数据包嗅探的最简单的方法? --------------解决方案------------- 我建议使用Wireshark的. 它易于使用,并且运行在许多平台. http://www.wireshark.org/ 如果你到一定的编码(而不是仅仅运行的wireshark / tcpdump的),那么

  • 应用层的Ad Hoc网络串音,很像TCP 2012-08-11

    我想在部署参与,提高了信息的鲁棒性无线ad hoc网络的移动设备的应用程序. 首要的任务很简单:从节点S(源)发送数据(可能是更大的尺寸)到节点D(目的地). 这里是我的示例拓扑: --- N1 --- / | \ / | \ S ----- N2 ----- N4 ----- D \ | / \ | / --- N3 --- 通过简单地使用TCP,我可以设置从s可靠的通信通道N2和N4至D.这是确定. 我现在的问题是:我想是N1和N3也可以得到(偷听)用S,N2和N4发送的消息,但他们并不需要

  • 包重定向到用户空间TCP堆栈,而无需修改应用程序 2012-09-22

    我使用的是基于Linux下运行Linux堆栈一个用户空间TCP堆栈. 不幸的是,要求应用程序特别要求的普通插座API函数自身的修改版本,然后就抓住它接收响应使用libpcap的传入数据包. 现在我的问题是,是否有什么办法,而无需修改应用程序本身重定向从应用程序到这个TCP堆栈的数据包. 换种方式,我在寻找一种方式来拦截调用套接字API,并将其重定向到用户空间等效. 希望这是多还是不太清楚我的意思. --------------解决方案------------- 两种想法(未经测试,首款谷歌他们是

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.499 (s). 10 q(s)