看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《Killercat (殺人貓™)》之銘言: : ※ 引述《spider391 (小乖)》之銘言: : 其實在Win32裡面,IP是會被轉換成hex以後在運算的 : (修正一下,不只win32, 事實上linux..甚至絕大多數的系統都是) : 你可以參考一下inet_addr這個函數是幹嘛的(他會轉出一個unsigned long) : sockaddr_in a; : a.S_un.S_addr = inet_addr("192.168.0.1");<==這個指定IP的地方還記得怎麼做嗎? : unsigned long毫無疑問的可以++, 恩....我想你知道接下來該怎麼做了 =P 這個函式我有試過,程式很短我就直接貼上了 ====================================================== #include <iostream> using namespace std; #include <winsock.h> int main(){ cout << hex << inet_addr("192.168.0.1") << endl; cout << hex << inet_addr("192.168.0.2") << endl; } ======================================================= 印出的結果 100a8c0 200a8c0 若是用 unsigned long ++ 的方式不會如預期 我不知道是不是因為 byte order 的關西 (我沒有在 linux 平台上測) 是要加上 ntohl() 之類的 function 嗎?? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.216.177.202
freesamael:嗯,先ntohl()加完再htonl()存回去 03/11 09:52
Killercat:omg 忘記endian問題 抱歉XD 03/11 12:17