ip字符串转换 linux,Linux网络编程入门
在日常使用,我們更多的使用十進(jìn)制字符串表示IP地址,比如192.169.130.66,而不是記憶32位的IP地址(關(guān)鍵是太長(zhǎng)了記不住呀),使用字符串IP更為方便,可讀性也更好。
但是根據(jù)上述in_addr定義,網(wǎng)絡(luò)編程中需要的是網(wǎng)絡(luò)字節(jié)序表示的IP地址,因此需要有函數(shù)能相互轉(zhuǎn)換十進(jìn)制字符串和網(wǎng)絡(luò)字節(jié)序整數(shù)表示的IP地址。
函數(shù)的頭文件以及定義如下:
#include
in_addr_t inet_addr( const char *string); /* 將字符串IP地址轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)序整數(shù)表示的IP地址 */
char *inet_ntoa( struct in_addr in); /* 將網(wǎng)絡(luò)字節(jié)序整數(shù)表示的IP地址轉(zhuǎn)換為字符串IP地址 */
如果IP地址合法,inet_addr函數(shù)可以成功轉(zhuǎn)換為對(duì)應(yīng)網(wǎng)絡(luò)字節(jié)序;如果IP地址非法,那么inet_addr返回的值為INADDR_NONE(表示無(wú)效的結(jié)果)。
其中in_addr_t一般為32位的unsigned in,表示網(wǎng)絡(luò)字節(jié)序。
寫(xiě)個(gè)程序測(cè)試下上述函數(shù):
#include
#include // inet_addr
int main()
{
const char *string1 = "192.168.130.60";
const char *string2 = "192.168.130.256"; // 非法IP,范圍為0~255,
in_addr_t network_address1 = inet_addr(string1);
if (network_address1 == INADDR_NONE) {
printf("錯(cuò)誤");
} else {
printf("網(wǎng)絡(luò)字節(jié)序?yàn)?#xff1a;%#x\n", network_address1);
}
in_addr_t network_address2 = inet_addr(string2);
if (network_address2 == INADDR_NONE) {
printf("錯(cuò)誤");
} else {
printf("網(wǎng)絡(luò)字節(jié)序?yàn)?#xff1a;%#x\n", network_address2);
}
return 0;
}
在右側(cè)建立個(gè)c文件,測(cè)試上述轉(zhuǎn)換函數(shù)。
總結(jié)
以上是生活随笔為你收集整理的ip字符串转换 linux,Linux网络编程入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 玉柴6k天然气发动机的机油压力低是啥原因
- 下一篇: 适用于Linux的Windows子系统W