Показать сообщение отдельно

  #2  
Старый 29.04.2008, 09:25
criz
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме:
811764

Репутация: 119
По умолчанию

вот, что получается:
Код:
	struct tcp_header *tcp_hd;
	struct IPHeader *ip_hd;

	unsigned short int tcp_win; 
	unsigned long int tcp_ack;

	int packet_len = ETH_HDRSIZE + IP_HDRSIZE + TCP_HDRSIZE;
	
	unsigned char *packet = (unsigned char *)malloc(packet_len);

	tcp_hd = (struct tcp_header *)(packet + ETH_HDRSIZE + IP_HDRSIZE);
	ip_hd = (struct ip_hd *)(packet + ETH_HDRSIZE + IP_HDRSIZE);


	ip_hd->iph_verlen = 4;
	ip_hd->iph_tos	= 0;
	ip_hd->iph_id	= htons(55555);
	ip_hd->iph_offset = htons(0x4000);
	ip_hd->iph_ttl	=	128;
	ip_hd->iph_protocol		=	6;
	ip_hd->iph_xsum	=	0;
	ip_hd->iph_dest	=	inet_addr("192.168.0.1");

	  /* Set tcp header */

	tcp_hd->tcp_src = htons(80);
	tcp_hd->tcp_dst = htons(80);
	tcp_hd->tcp_seq = htonl(tcp_ack + tcp_win);
	tcp_hd->tcp_ack = 0;
	tcp_hd->tcp_res = 0;
	tcp_hd->tcp_off = 5;  
	tcp_hd->tcp_flags = TCP_RST;
	tcp_hd->tcp_win = 0;
	tcp_hd->tcp_sum = 0;
	tcp_hd->tcp_urp = 0;
потом делаю sendto на нужный ИП
 
Ответить с цитированием