
Visual C++制作一个 Snier 实例
2006-11-22 05:00 作者:刘涛出处:天极开发责任编辑:方舟
三、程序代码
/////////////////////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <string.h>
#include <Winsock2.h>
#include <mstcpip.h>
#include "ws2tcpip.h"
#define MAX_PACK_LEN 4096 //接收的最大 IP 报文
#define MAX_ADDR_LEN 16 // 点分十进制地址的最大长度
#define MAX_HOSTNAME_LAN 255 //最大主机名长度
typedef struct _iphdr
{
unsigned char h_lenver; //4 位首部长度+4 位 IP 版本号
unsigned char tos; //8 位服务类型 TOS
unsigned short total_len; //16 位总长度(字节)
unsigned short ident; //16 位标识
unsigned short frag_and_flags; //3 位标志位
unsigned char ttl; //8 位生存时间 TTL
unsigned char proto; //8 位协议 (TCP, UDP 或其他)
unsigned short checksum; //16 位 IP 首部校验和
unsigned int sourceIP; //32 位源 IP 地址
unsigned int destIP; //32 位目的 IP 地址
}IP_HEADER;
SOCKET SockRaw;
int DecodeIpPack(char *,int); //IP 解包函数
void CheckSockError(int,char*);//SOCK 错误处理函数
void main(int argc, char ** argv)
{
int iErrorCode;
char RecvBuf[MAX_PACK_LEN] = {0};
WSADATA wsaData;
char name[MAX_HOSTNAME_LAN];