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)