[問題] C++ 處理 IPv4 的二三事
板上各位大大好:
我現在目前在寫一個網路查詢的程式,遇到些處理 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
推
03/10 16:38, , 1F
03/10 16:38, 1F
→
03/10 16:40, , 2F
03/10 16:40, 2F
→
03/10 16:41, , 3F
03/10 16:41, 3F
推
03/10 16:43, , 4F
03/10 16:43, 4F
推
03/10 16:47, , 5F
03/10 16:47, 5F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 3 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章