www.pudn.com > WindowsTCP-IP.rar > liufile.cpp
#include#include #include #pragma comment(lib,"Ws2_32.lib") #define IPVER 4 #define MAX_BUFF_LEN 65500 //定义ip头部结构体 typedef struct _iphdr { UCHAR h_verlen; UCHAR tos; USHORT total_len; USHORT ident; USHORT frag_and_flags; UCHAR ttl; UCHAR proto; USHORT checksum; ULONG sourceIP; ULONG destIP; }IP_HEADER; //定义TCP伪头部 typedef struct _psdhdr { ULONG saddr; ULONG daddr; UCHAR mbz; UCHAR ptcl; USHORT tcpl; }PSD_HEADER; //定义TCP头部结构体 typedef struct _tcphdr { USHORT th_sport; USHORT th_dport; ULONG th_seq; ULONG th_ack; UCHAR th_lenres; UCHAR th_flag; USHORT th_win; USHORT th_sum; USHORT th_urp; }TCP_HEADER; USHORT checksum(USHORT *buffer,int size); IP_HEADER ip_header={0}; PSD_HEADER psd_header={0}; TCP_HEADER tcp_header={0}; char Sendto_BUFF[MAX_BUFF_LEN]; unsigned short check_buff[MAX_BUFF_LEN]; const char tcp_send_data[]={"this is my homework of network,i an happy!"}; int main(int argc,char*argv[]) { if(argc!=5) { cout<<"Usage:"; cout<<"SendTCP sourip sourport destip destport"< 1){ cksum+=*buffer++; size-=sizeof(USHORT); } if(size){ cksum+=*(UChar*)buffer; } cksum=(cksum>>16)+(cksum&0xffff); return(USHORT)(~cksum)