-1
A
回答
1
如果兩個IP地址都以字符串形式,我會用的strtok()來打破各(IPv4)的IP地址爲四個子和比較的子字符串中的兩個IP地址字符串,即:
char ipaddr1[16] = "192.168.1.1';
char ipaddr2[16] = "127.0.0.1';
變爲:
char ipaddr1_byte0[4] = "192";
char ipaddr1_byte1[4] = "168";
char ipaddr1_byte2[4] = "1";
char ipaddr1_byte3[4] = "1";
char ipaddr2_byte0[4] = "127";
char ipaddr2_byte1[4] = "0";
char ipaddr2_byte2[4] = "0";
char ipaddr2_byte3[4] = "1";
好像你應該能夠使用
same = strcmp(ipaddr1_byte0, ipaddr2_byte0);
和所有四對類似,但您可能必須通過調用每個字節值atoi()將每個字節變成一個int;然後比較整數。
如果(IPv4)的IP地址是在INT形式,則該過程是類似的,除了四個子串必須被轉換成8位整數,而不是字符串:
int ipaddr1 = 0xc0a80101; // 192.168.1.1
int ipaddr2 = 0xff000001; // 127.0.0.1
變爲:
int ipaddr1_byte0 = 0xff & ipaddr1 >> 24; // 192 or 0xc0
int ipaddr1_byte1 = 0xff & ipaddr1 >> 16; // 168 or 0xa8
int ipaddr1_byte2 = 0xff & ipaddr1 >> 8; // 1
int ipaddr1_byte3 = 0xff & ipaddr1; // 1
int ipaddr2_byte0 = 0xff & ipaddr1 >> 24; // 127 or 0xff
int ipaddr2_byte1 = 0xff & ipaddr1 >> 16; // 0
int ipaddr2_byte2 = 0xff & ipaddr1 >> 8; // 0
int ipaddr2_byte3 = 0xff & ipaddr1; // 1
這些8位字節中的每一個都必須與所有其他三個字節分開處理,並且與IP地址分開處理爲一個32位整數。督察,不要以爲你可以使一個IP地址這種方式:
int ipaddr1 = 192168001001; // DOES NOT WORK
,因爲它不會工作
相反,你必須這樣做:
int ipaddr1 = (192 << 24) | (168 << 16) | (1 << 8) | 1; // don't add these; inclusive-or them together
- 皮特
+0
你會更好地使用strtok_r()而不是strtok()。在C99中,它不是線程安全的,所以假設你將在線程環境中使用它,在某些時候使用可重入strtok_r()更安全。 – 2011-03-25 16:36:33
+0
絕對正確,謝謝。 – 2011-03-25 17:08:47
相關問題
- 1. 比較IP地址
- 2. 解析比較IP地址在C++
- 3. 比較IP v6地址
- 4. XPATH 1.0:比較IP地址
- 5. 如何比較IP地址
- 6. 在php比較ip地址
- 7. iOS iP地址比較IP範圍
- 8. 比較ip地址與MySQL中的開始和結束ip地址的範圍
- 9. 比較兩個ip與C#
- 10. 通過純javascript比較IP地址
- 11. 你會如何比較IP地址?
- 12. Linux命令爲IPV6 IP地址比較
- 13. 比較IP地址在PHP不工作
- 14. Rails 3 - 獲取並比較IP地址
- 15. IP地址日誌和比較
- 16. 比較地址
- 17. 如何比較C#中的IP地址範圍?
- 18. 比較2在C中的字符串格式的IP地址
- 19. 如何比較c中的兩個ip地址?
- 20. 與IP地址
- 21. Java比較地址
- 22. 比較數組的地址在C++ 11
- 23. Django網址與IP地址
- 24. IP地址與「http://」
- 25. 問題與比較套接字地址
- 26. Uri.parse與本地IP地址
- 27. 編程地使用Mac地址解析Ip地址
- 28. 遠程IP地址
- 29. Groovy Socket編程和IP地址
- 30. Ruby編程:如何截斷IP地址?
你能定義*特定*和*限制*嗎? – chrisaycock 2011-03-25 15:29:12
呃什麼......? – stefan 2011-03-25 15:29:32
不完全確定你的意思。請澄清。 – 2011-03-25 15:30:24