ip字符串轉換 linux,Linux網絡編程入門

在日常使用,我們更多的使用十進制字符串表示IP地址,比如192.169.130.66,而不是記憶32位的IP地址(關鍵是太長了記不住呀),使用字符串IP更為方便,可讀性也更好。

但是根據上述in_addr定義,網絡編程中需要的是網絡字節序表示的IP地址,因此需要有函數能相互轉換十進制字符串和網絡字節序整數表示的IP地址。

函數的頭文件以及定義如下:

#include

in_addr_t inet_addr( const char *string); /* 將字符串IP地址轉換為網絡字節序整數表示的IP地址 */

char *inet_ntoa( struct in_addr in); /* 將網絡字節序整數表示的IP地址轉換為字符串IP地址 */

如果IP地址合法,inet_addr函數可以成功轉換為對應網絡字節序;如果IP地址非法,那么inet_addr返回的值為INADDR_NONE(表示無效的結果)。

其中in_addr_t一般為32位的unsigned in,表示網絡字節序。

寫個程序測試下上述函數:

#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("錯誤");

} else {

printf("網絡字節序為:%#x\n", network_address1);

}

in_addr_t network_address2 = inet_addr(string2);

if (network_address2 == INADDR_NONE) {

printf("錯誤");

} else {

printf("網絡字節序為:%#x\n", network_address2);

}

return 0;

}

在右側建立個c文件,測試上述轉換函數。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/530841.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/530841.shtml
英文地址,請注明出處:http://en.pswp.cn/news/530841.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux php目錄是否存在,PHP判斷文件或者目錄是否可寫,兼容windows/linux系統

在PHP中,可用is_writable()函數來判斷一個 文件/目錄 是否可寫,用是否可生成文件的方式判斷目錄是否可寫;網上的一些代碼大多數能判斷linux系統,但windows服務器下判斷不準確。下面的代碼兼容windows和linux判斷文件或目錄是否可寫…

linux 腳本 發送郵件,shell 腳本發送郵件

有時候會使用腳本完成一系列的自動化工作,工作完成后還需要郵件通知相關人員,此時可以使用第三方的工具:SendEmail,最新版本sendEmail-v1.56.tar.gz下載地址:http://caspian.dotconf.net/menu/Software/SendEmail/sendEmil的使用范…

link linux 跨設備,Linux中的兩種link方式

Linux系統中包括兩種鏈接方式:硬鏈接(hard link)和符號鏈接(symbolic link),其中符合鏈接就是所謂的軟鏈接(soft link),那么兩者之間到底有什么區別呢?inode在Linux系統中,內核為每一個新創建的文件分配一個inode&…

linux 運行ca.crt,linux下使用openssl生成 csr crt CA證書,opensslcsr

linux下使用openssl生成 csr crt CA證書,opensslcsr本文主要借鑒和引用了下面2個地址的內容,然后在自己的機器上進行了測試和執行,并做了如下記錄。ref:http://blog.chinaunix.net/uid-26760055-id-3128132.htmlhttp://www.111cn.net/sys/lin…

linux cpu核數和線程數,cpu個數、核數和線程的理解

1.查看物理cpu個數grep physical id /proc/cpuinfo | sort -u | wc -l2.查看核心數量grep core id /proc/cpuinfo | sort -u | wc -l3.查看線程數grep processor /proc/cpuinfo | sort -u | wc -lcat /proc/cpuinfo 查看文件里面關鍵信息processor : 23 ----------代表…

linux設置超鏈接,幫助-鏈接 - Linux Kernel Newbies

this page is outdated and needs to be fixed參考鏈接形式語法備注內部鏈接WikiNameCamelCase page name內部自由鏈接["Page"] or ["free link"]可配置函數內部子頁面鏈接/SubPage or ["/Sub page"]相對于上一級頁面外部鏈接http://example.net…

linux 文件系統cache,終于找到一篇詳解Linux文件系統Cache的文章

級別: 初級2006 年 5 月 11 日文件 Cache 管理是 Linux 內核中一個很重要并且較難理解的組成部分。本文詳細介紹了 Linux內核中文件 Cache 管理的各個方面,希望能夠對開發者理解相關代碼有所幫助。自從誕生以來,Linux 就被不斷完善和普及&…

寶塔Linux怎么安裝Mariadb,如何在linux上面安裝mariadb總結

1、下載MariaDB(mariadb-5.5.31.tar.gz)[rootzabbix_server opt]# wget http://www.cmake.org/files/v2.8/cmake-2.8.5.tar.gz2、安裝MariaDB[rootzabbix_server opt]# tar xzvf mariadb-5.5.31.tar.gz[rootzabbix_server cmake-2.8.5]# cd cmake-2.8.5[rootzabbix_server cmak…

c語言數碼管加法程序怎么寫,拜托大神寫數碼管與矩陣鍵盤結合設計簡易計算器C語言的程序...

我和你用的是一樣的,給你一個我買板子送的矩陣程序//4*4鍵盤檢測程序,按下鍵后相應的代碼顯示在數碼管上#includesbit beepP2^3;sbit dulaP2^6;sbit welaP2^7;unsigned char i100;unsigned char j,k,temp,key;void delay(unsigned char i){for(ji;j>0;j--)for(k1…

七橋問題c語言程序數據結構,數據結構與算法學習——圖論

什么是圖?在計算機程序設計中,圖結構也是一種非常常見的數據結構但是圖論其實是一個非常大的話題圖結構是一種與樹結構有些相似的數據結構圖論是數學的一個分支,并且在數學概念上,樹是圖的一種它以圖為研究對象,研究頂…

c語言式表白,c語言表白必備

c語言表白必備七夕情人節表白必備,多顏色心形展示看圖#include#include#include#include #define r 10#define R 172int main(){int i;printf("我");fflush(stdout); //強制刷新緩存,輸出顯示Sleep(1000);printf("自");fflush(stdou…

《c#編程語言詳解》,C#編程語言詳解(第2版)

前言前 言C#項目啟動于七年前——1998年12月,其目標是為全新的并命名為.NET的平臺創建一種簡單、現代、面向對象和類型安全的程序設計語言。從那時起,C#已經走過了漫長的道路。現在,成千上萬的程序員在使用C#語言;ECMA和ISO/IEC已…

明解c語言中級篇微盤,明解C語言:中級篇

第1章 猜數游戲  11-1 猜數判定  2通過if語句實現條件分支  2if語句的嵌套  3實現多分支的方法  41-2 重復到猜對為止  8通過do語句循環  8相等運算符和關系運算符  9通過while語句循環  10break語句  10while語句和do語句  11先判斷后循環和先循環后…

共同體不是c語言中的一個數據類型,《c語言程序設計教學資料》第12章---構體和共同體.ppt...

《c語言程序設計教學資料》第12章---構體和共同體向函數傳遞結構體 用結構體指針或結構體數組作為函數參數,向函數傳遞結構體的地址 按值調用 按地址調用 結構體變量作函數參數 實現按值調用 結構體指針作函數參數 從函數返回 結構體變量的值 共用體 共用體所占內存…

android中gradle的作用,Gradle 之 Android 中的應用

在上一篇文章中 Gradle 之語言基礎 Groovy 主要介紹了 Groovy 的基礎語法(如果沒有 Groovy 的基礎,建議先看看上篇文章,如果可以動手敲一下里面的示例代碼就更好不過了),也是為本篇文章打基礎的。本篇文章主要介紹 Gradle 在 Android 中的應用…

android程序更改pdf文件格式,Android根據pdf模板生成pdf文件

1 public voidFillPdfTemplate(String id) {2 android.icu.text.SimpleDateFormat simpleDateFormat 3 new android.icu.text.SimpleDateFormat("HHmmss");//HH:mm:ss4 //設置默認時區5 simpleDateFormat.setTimeZone(android.icu.util.TimeZone.getTimeZone("G…

android頁面跳轉時獲取地址欄,Android 利用scheme頁面內跳轉協議進行跳轉

什么是 URL Scheme?android中的scheme是一種頁面內跳轉協議。通過定義自己的scheme協議,可以非常方便跳轉app中的各個頁面;通過scheme協議,服務器可以定制化告訴App跳轉到APP內部頁面。之前項目都是我們客戶端和服務器端用自定義j…

android按鈕置于頂層,如何把按鍵顯示在最頂層窗口上(屏幕最頂上)

[Delphi] 純文本查看 復制代碼unit Unit2;interfaceusesWinapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs;typeTForm2 class(TForm)procedure FormCreate(Sender: TObject);private{ …

android signalr 自動重連,.net-何時在signalR中重新連接?

當客戶端脫機然后不久后重新獲得連接時,就會發生集線器重新連接。 SignalR配置值在很大程度上決定了以下示例的時間戳,因此無需逐字記錄時間。以下是一些示例及其涉及重新連接行為的結果(時間格式:m:ss):當我提到以下內…

自己寫的android apk反編譯,獲取Android自己寫好了的apk以及反編譯

今天,我們先說一下,獲取Android自帶的apk以及反編譯它們來學習Android工程師是怎樣寫的,今天我們就以拿到Android自帶的短信管理器的apk為例子你可能有疑問,為什么要那么麻煩,從系統來拿,還要反編譯&#x…