最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言 sockaddr和sockaddr_in案例詳解

 更新時間:2021年08月16日 15:27:11   作者:阿卡基YUAN  
這篇文章主要介紹了C語言 sockaddr和sockaddr_in案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下

struct sockaddr 和 struct sockaddr_in 這兩個結構體用來處理網(wǎng)絡通信的地址。

一、sockaddr

sockaddr在頭文件#include <sys/socket.h>中定義,sockaddr的缺陷是:sa_data把目標地址和端口信息混在一起了,如下:

struct sockaddr {  
     sa_family_t sin_family;//地址族
    char sa_data[14]; //14字節(jié),包含套接字中的目標地址和端口信息               
   }; 

二、sockaddr_in

sockaddr_in在頭文件#include<netinet/in.h>或#include <arpa/inet.h>中定義,該結構體解決了sockaddr的缺陷,把port和addr 分開儲存在兩個變量中,如下: 

這里寫圖片描述

sin_port和sin_addr都必須是網(wǎng)絡字節(jié)序(NBO),一般可視化的數(shù)字都是主機字節(jié)序(HBO)。

三、總結

二者長度一樣,都是16個字節(jié),即占用的內(nèi)存大小是一致的,因此可以互相轉(zhuǎn)化。二者是并列結構,指向sockaddr_in結構的指針也可以指向sockaddr。

sockaddr常用于bind、connect、recvfrom、sendto等函數(shù)的參數(shù),指明地址信息,是一種通用的套接字地址。 

sockaddr_in 是internet環(huán)境下套接字的地址形式。所以在網(wǎng)絡編程中我們會對sockaddr_in結構體進行操作,使用sockaddr_in來建立所需的信息,最后使用類型轉(zhuǎn)化就可以了。一般先把sockaddr_in變量賦值后,強制類型轉(zhuǎn)換后傳入用sockaddr做參數(shù)的函數(shù):sockaddr_in用于socket定義和賦值;sockaddr用于函數(shù)參數(shù)。

例子如下:

#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
 
int main(int argc,char **argv)
{
    int sockfd;
    struct sockaddr_in mysock;
 
    sockfd = socket(AF_INET,SOCK_STREAM,0);  //獲得fd
 
    bzero(&mysock,sizeof(mysock));  //初始化結構體
    mysock.sin_family = AF_INET;  //設置地址家族
    mysock.sin_port = htons(800);  //設置端口
    mysock.sin_addr.s_addr = inet_addr("192.168.1.0");  //設置地址
    bind(sockfd,(struct sockaddr *)&mysock,sizeof(struct sockaddr); /* bind的時候進行轉(zhuǎn)化 */
    ... ...
    return 0;
}

題外話,兩個函數(shù) htons() 和 inet_addr()。

htons()作用是將端口號由主機字節(jié)序轉(zhuǎn)換為網(wǎng)絡字節(jié)序的整數(shù)值。(host to net)

inet_addr()作用是將一個IP字符串轉(zhuǎn)化為一個網(wǎng)絡字節(jié)序的整數(shù)值,用于sockaddr_in.sin_addr.s_addr。

inet_ntoa()作用是將一個sin_addr結構體輸出成IP字符串(network to ascii)。比如:

printf("%s",inet_ntoa(mysock.sin_addr));

htonl()作用和htons()一樣,不過它針對的是32位的(long),而htons()針對的是兩個字節(jié),16位的(short)。

與htonl()和htons()作用相反的兩個函數(shù)是:ntohl()和ntohs()。 

這里寫圖片描述

到此這篇關于C語言 sockaddr和sockaddr_in案例詳解的文章就介紹到這了,更多相關C語言 sockaddr和sockaddr_in內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C語言實現(xiàn)為無聲avi視頻添加wave音樂

    C語言實現(xiàn)為無聲avi視頻添加wave音樂

    這篇文章主要為大家詳細介紹了C語言如何實現(xiàn)為無聲avi視頻添加wave音樂,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的小伙伴可以了解一下
    2023-11-11
  • 一篇文章教你用C語言模擬實現(xiàn)字符串函數(shù)

    一篇文章教你用C語言模擬實現(xiàn)字符串函數(shù)

    這篇文章主要介紹了C語言模擬實現(xiàn)字符串函數(shù),開發(fā)程序的時候經(jīng)常使用到一些字符串函數(shù),例如求字符串長度,拷貝字符串……,需要的朋友可以參考下
    2021-09-09
  • C++實現(xiàn)冒泡排序(BubbleSort)

    C++實現(xiàn)冒泡排序(BubbleSort)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)冒泡排序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • CFile與CStdioFile的文件讀寫使用方法詳解

    CFile與CStdioFile的文件讀寫使用方法詳解

    以下是對CFile與CStdioFile的文件讀寫使用方法進行了詳細的分析介紹,需要的朋友可以過來參考下
    2013-09-09
  • C++類與對象深入之構造函數(shù)與析構函數(shù)詳解

    C++類與對象深入之構造函數(shù)與析構函數(shù)詳解

    朋友們好,這篇播客我們繼續(xù)C++的初階學習,現(xiàn)在對我們對C++非常重要的一個知識點做出總結,整理出來一篇博客供我們一起復習和學習,如果文章中有理解不當?shù)牡胤?還希望朋友們在評論區(qū)指出,我們相互學習,共同進步
    2022-06-06
  • c++之類型別名的實現(xiàn)

    c++之類型別名的實現(xiàn)

    本文主要介紹了c++之類型別名的實現(xiàn),包括C++98版本使用typedef關鍵字和C++11版本推薦使用using關鍵字來創(chuàng)建類型別名,具有一定的參考價值,感興趣的可以了解一下
    2025-02-02
  • C語言實現(xiàn)掃雷小游戲簡單版

    C語言實現(xiàn)掃雷小游戲簡單版

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)掃雷小游戲簡單版,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • c++對象內(nèi)存布局示例詳解

    c++對象內(nèi)存布局示例詳解

    C++類的內(nèi)存布局跟結構體有點像,實際上,類中成員變量的內(nèi)存布局規(guī)則跟結構體是一樣的,區(qū)別在于函數(shù),虛函數(shù)的放置,下面這篇文章主要給大家介紹了關于c++對象內(nèi)存布局的相關資料,需要的朋友可以參考下
    2021-10-10
  • 詳解c++良好的編程習慣與編程要點

    詳解c++良好的編程習慣與編程要點

    c++語言的靈活是建立在對編程者個人的編程素質(zhì)的嚴格要求基礎上的,好的C++編程習慣能避免很多問題。沒有好的編程習慣,極有可能編寫一行代碼,編譯器能報十幾個錯誤,而且就算編譯通過了,將來在運行過程中也會有很多莫名奇妙的問題
    2021-06-06
  • 講解C++編程中Address-of運算符&的作用及用法

    講解C++編程中Address-of運算符&的作用及用法

    這篇文章主要介紹了C++編程中Address-of運算符&的作用及用法,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2016-01-01

最新評論

忻州市| 三亚市| 山西省| 武平县| 收藏| 巩义市| 台江县| 北碚区| 乌鲁木齐县| 贵溪市| 桐柏县| 名山县| 玉树县| 勐海县| 牟定县| 济源市| 海城市| 抚远县| 扎鲁特旗| 招远市| 邵东县| 渝中区| 耒阳市| 南汇区| 晋城| 池州市| 佛学| 信宜市| 邯郸县| 边坝县| 宝丰县| 彩票| 岳池县| 长乐市| 商洛市| 泸州市| 凌海市| 竹山县| 昆明市| 宿迁市| 湘乡市|