Re: [問題] libpcap 顯示封包來源

看板C_and_CPP (C/C++)作者 (~~~~~~~~~~)時間16年前 (2010/06/10 11:28), 編輯推噓1(105)
留言6則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《septemhill (冰淇淋乾杯)》之銘言: : 程式碼如下: : 在Linux平台上開發,使用libpcap-0.94 : http://nopaste.csie.org/5ad1b : 目前在我程式碼中有註解了兩個地方:/* 1 */和/* 2 */ : 兩個地方顯示出來的結果似乎怪怪的 : 把inet_ntoa(daddr)和inet_ntoa(saddr)分行表示時是正常的 : 但是寫成一行時,source和dest顯示的卻會是一樣的資料 : 為什麼寫成一行和寫成兩行結果會差這麼多? : 還請各位先進指點一下,謝謝 給你看一下 inet_ntoa 的 code 吧 #define INET_NTOA_MAX_LEN 16 /* max 12 digits + 3 '.'s + 1 nul */ char *inet_ntoa_r(struct in_addr in, char buf[INET_NTOA_MAX_LEN]) { in_addr_t addr = ntohl(in.s_addr); int i; char *p, *q; q = 0; p = buf + INET_NTOA_MAX_LEN - 1; /* cannot use sizeof(buf) here */ for (i=0 ; i < 4 ; i++ ) { p = _int10tostr(p, addr & 0xff) - 1; addr >>= 8; if (q) { *q = '.'; } q = p; } return p+1; } char *inet_ntoa(struct in_addr in) { static char buf[INET_NTOA_MAX_LEN]; return(inet_ntoa_r(in, buf)); } 順便看一下說明 The inet_ntoa() function converts the Internet host address in, given in network byte order, to a string in IPv4 dotted-decimal notation. The string is returned in a statically allocated buffer, which subsequent calls will overwrite. 不知道你老師要求怎樣,還是你看錯要求了 ?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.208.15

06/10 11:29, , 1F
Format: TCP|UDP, srcIP:srcPort, dstIP:dstPort
06/10 11:29, 1F

06/10 11:29, , 2F
這是我們抓封包format的要求
06/10 11:29, 2F

06/10 11:30, , 3F
分段顯示就好啦 -.- 有這麼難嗎
06/10 11:30, 3F

06/10 11:31, , 4F
fprintf 又不是規定一次一定要輸出一行
06/10 11:31, 4F

06/10 11:31, , 5F
好吧...也只能這樣了,謝謝
06/10 11:31, 5F

06/10 11:32, , 6F
你的輸出只要不要加上 \n 換行 後面自然就會連在一起啦
06/10 11:32, 6F
文章代碼(AID): #1C45lsnc (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1C45lsnc (C_and_CPP)