我用的TI的DM642DSP和BCM5221以太网芯片,进行连网
采用UDP协议,报文头:
- typedef union
- {
- Uint8 Bytes[6];
- Uint16 Words[3];
- }MacAddr;
- // Ethernet Header
- #define ETHHDR_SIZE 14
- typedef struct{
- MacAddr DstMac;
- MacAddr SrcMac;
- Uint16 Type;
- } EthHdr, *PEthHdr;
- // IP HEADER
- #define IPHDR_SIZE 20
- typedef struct{
- Uint8 VerLen; /*version and head length*/
- Uint8 TypeOfService; /*Type of Service*/
- Uint16 PacketLen; /*Packet Length*/
- Uint16 Sequence; /*Sequence number*/
- Uint16 MarkFragPoi; /*FlagOff*/
- Uint8 TTL; /*Time Life*/
- Uint8 ProtocolType; /*byProtocolype*/
- Uint16 HeadCheckSum; /*Check Sum*/
- IPAddr IPSrc; /*Source IP*/
- IPAddr IPDes; /*Destinate IP*/
- Uint8 Options[1];
- }IPHdr, *PIPHdr;
- // UDP HEADER
- #define UDPHDR_SIZE 8
- typedef struct {
- Uint16 SrcPort;
- Uint16 DstPort;
- Uint16 Length;
- Uint16 UDPChecksum;
- } UDPHdr;
用这三个首部依次相连,再加上数据部分,组成一个包发出去
可是在同一个子网内的计算机上根本捕捉不到,子网内使用的是固定IP,192.168.1.x
所以我程序里面也是随意指定的一个未被占用的192.168.1.197
各个首部域检查多次 都是正确的 为什么收不到呢?