作者spider391 (小乖)
看板C_and_CPP
標題Re: [問題] C++ 處理 IPv4 的二三事
時間Thu Mar 11 08:56:52 2010
※ 引述《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