看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
septemhill:Format: TCP|UDP, srcIP:srcPort, dstIP:dstPort 06/10 11:29
septemhill:這是我們抓封包format的要求 06/10 11:29
visor:分段顯示就好啦 -.- 有這麼難嗎 06/10 11:30
visor:fprintf 又不是規定一次一定要輸出一行 06/10 11:31
septemhill:好吧...也只能這樣了,謝謝 06/10 11:31
visor:你的輸出只要不要加上 \n 換行 後面自然就會連在一起啦 06/10 11:32