Я использую pcap для создания сниффера пакетов.
у меня есть этот Tcp структуру:порядковый номер печати обнюхиваемого пакета
typedef struct TSP_header{
unsigned short int sport;
unsigned short int dport;
unsigned int seqnum;
unsigned int acknum;
unsigned char reserved:4, offset:4;
unsigned int
tcp_res1:4, //little-endian
tcph_hlen:4, //length of tcp header in 32-bit words
tcph_fin:1, //Finish flag "fin"
tcph_syn:1, //Synchronize sequence numbers to start a connection
tcph_rst:1, //Reset flag
tcph_psh:1, //Push, sends data to the application
tcph_ack:1, //acknowledge
tcph_urg:1, //urgent pointer
tcph_res2:2;
unsigned short int tcph_win;
unsigned short int tcph_chksum;
unsigned short int tcph_urgptr;
}TSP_header;
Как я могу напечатать порядковый номер?
Должен ли я использовать htons (sequence_number) ?? потому что он работает не так!
мой другой вопрос - это число после объявления переменной?
Что означает 4 в tcph_hlen: 4
Я не думаю, что ntohl() работает, потому что он дает мне отрицательную последовательность и цифры. – scatman
ntohl принимает значение * unsigned * integer в качестве параметра и в результате дает целое число без знака *. Итак, если вы не допустили большую ошибку, поставив результат ntohl в * signed * int, отрицательные числа не могут произойти. Покажите свой код. – bortzmeyer
Я даю вам полезный совет: прочитайте документацию. 'man 3 printf' скажет вам, что «d, i Аргумент int преобразуется в подписанную десятичную нотацию». Я позволил вам самим понять, что необходимо для неподписанного. – bortzmeyer