看板 C_and_CPP 關於我們 聯絡資訊
板上各位大大好: 我現在目前在寫一個網路查詢的程式,遇到些處理 IP 上的問題, 想請教大家的意見。 目前開發環境在 windows XP , 用的是 wxWidgets 的 C++ Library 我想要處理 ========================================================== eq. 192.168.8.0 ~ 192.168.8.254 範圍內的 IP // test 192.168.8.0 連線狀態 // test 192.168.8.1 連線狀態 ... // test 192.168.8.254 連線狀態 ========================================================== 最直覺的想法是將 IP 包成一個 class,然後用迴圈處理。 eq. class IP{ std::string ip; public: IP(std::string my_ip); IP& operator++(); bool operator< (const IP& other) const; std::string get(); }; IP ip_start("192.168.8.0"); IP ip_end("192.168.8.254"); for(;ip_start<ip_end; ++ip_start) { // 測試連線 testConnect(ip_start); } 我的問題是,關於 operator++ 是否有比較好的實作方式? 或是有現成的類似 class 可以用 (MFC 的類別我還沒有 survey,我會在查看看) 我在網路上找到的 #include <winsock.h> unsigned long inet_addr( __in const char *cp ); 函式 不符合我需求,我想要的是 ip_start++ 後 (原本是 192.168.8.0) 會變成 192.168.8.1。 我自己實作的方式是用 ip[4] 的方式 parse 字串將每個整數存起來 加一後 (若是遇到 255 要考慮進位) 在轉成字串 ... 看了之後覺得比董卓還醜,不忍目睹,因此想問各位有甚麼好想法 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.216.177.202
loveme00835:用32位元整數, 一次搞定 03/10 16:38
loveme00835:11000000 10101000 00001000 00000000 到 03/10 16:40
loveme00835:11000000 10101000 00001000 11111110 03/10 16:41
VictorTom:題外話, ...255的subnet, ...0應該是name不用test吧@_@" 03/10 16:43
loveme00835:WIN 32 API 的 IN_ADDR 結構跟相關函式可以考慮一下 03/10 16:47