亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Linux 基本網絡編程

系統 2339 0

基本套接字分為客戶機/服務器和點對點模式。

C/S:sever/client---------------------------一般采用TCP

B/S:browser/server-----------------------一般采用UDP

常用的數據結構 有in_addr(存儲IP地址),sockaddr_in(表示Internet協議地址結構),sockaddr(存儲主機IP地址和接口信息)。

      
        struct
      
      
         in_addr{

    union{

        
      
      
        struct
      
      
        {u_char, s_b1, s_b2, s_b3, s_b4} s_un_b;

        
      
      
        struct
      
      
        {u_short s_w1, s_s2;} s_un_w;

        u_long s_addr;

  } s_un;
        
}
      
        struct
      
      
         sockaddr_in{

    
      
      
        short
      
       sin_family;                
      
        //
      
      
        AF_INET
      
      

    u_short sin_port;               
      
        //
      
      
        16位端口號
      
      
        struct
      
       in_addr sin_addr;   
      
        //
      
      
        32位IP地址
      
      
        char
      
       sin_zero[
      
        8
      
      
        ];

};        
      
    
      
        struct
      
      
         sockaddr{

    unsigned 
      
      
        short
      
      
         sa_family;

    
      
      
        char
      
       sa_data[
      
        14
      
      
        ];

};
      
    

例子:

      
        in_addr test;

test..s_un_b.s_b1
      
      =
      
        192
      
      
        ;

test..s_un_b.s_b2
      
      =
      
        168
      
      
        ;

test..s_un_b.s_b3
      
      =
      
        0
      
      
        ;

test..s_un_b.s_b4
      
      =
      
        1
      
      ;
    
      
        struct
      
      
         sockaddr_in serverAddr;

memst(
      
      &serverAddr,
      
        0
      
      ,
      
        sizeof
      
      (
      
        struct
      
      
         sockaddr_in));

serverAddr.sin_family
      
      =AF_INET;                          
      
        //
      
      
        AF_INET表示TCP
      
      

serverAddr.sin_port=htons(
      
        80
      
      
        );

serverAddr.sin_addr.s_addr
      
      =htonl(INADDR_ANY);           
      
        //
      
      
        INADDR_ANY表示當前所用的IP
      
    

常用函數

      #incldue<sys/socket.h>




      
        //
      
      
        創建套接字
      
      

SOCKET PASCAL FAR socket(
      
        int
      
       af, 
      
        int
      
       type, 
      
        int
      
      
         protocol)


      
      
        //
      
      
        af指定通信協議--AF_UNIX,AF_INET,AF_NS


      
      
        //
      
      
        type指定套接字類型,SOCK_STREAM(TCP),SOCK_DGRAM(UDP),SOCK_RAM(原始套接字)


      
      
        //
      
      
        protocol指定特定協議




      
      
        //
      
      
        套接字綁定
      
      
        int
      
       PASCAL FAR bind(SOCKET s, 
      
        const
      
      
        struct
      
       sockaddr FAR *name, 
      
        int
      
      
         namelen)


      
      
        //
      
      
        s指定要關聯的套接字


      
      
        //
      
      
        name指定要綁定的IP地址與端口信息




      
      
        //
      
      
        偵聽
      
      
        int
      
       PASCAL FAR listen(SOCKET s, 
      
        int
      
      
         backlog)


      
      
        //
      
      
        backlog指定請求連接隊列的最大長度,一般設為5




      
      
        //
      
      
        偵聽,接受數據
      
      

SOCKET PASCAL FAR accept(SOCKET s, 
      
        struct
      
       sockaddr FAR* addr, 
      
        int
      
       FAR*
      
         addrlen)


      
      
        //
      
      
        s為當前指定的套接字


      
      
        //
      
      
        addr為保存當前客戶端的地址信息




      
      
        //
      
      
        創建連接
      
      
        int
      
       PASCAL FAR connect(SOCKET s, 
      
        const
      
      
        struct
      
       sockaddr FAR* name, 
      
        int
      
      
         namelen)




      
      
        //
      
      
        TCP發送數據
      
      
        int
      
       PASACAL FAR send(SOCKET s, 
      
        const
      
      
        char
      
       FAR* buf, 
      
        int
      
       len, 
      
        int
      
      
         flags);


      
      
        //
      
      
        s指定已經連接的套接字


      
      
        //
      
      
        buf表示待發送數據的緩沖區


      
      
        //
      
      
        flags用于設定發送控制參數,一般為0




      
      
        //
      
      
        TCP接受數據
      
      
        int
      
       PASACAL FAR recv(SOCKAET s,
      
        char
      
       FAR* buf,
      
        int
      
       len,
      
        int
      
      
         flags);




      
      
        //
      
      
        UDP發送數據
      
      

ssize_t sendto(
      
        int
      
       sockfd, 
      
        const
      
      
        void
      
       *buf, size_t len, 
      
        int
      
       flags, 
      
        const
      
      
        struct
      
       sockaddr *
      
        to, socklen_t tolen)

ssize_t recvform(
      
      
        int
      
       sockfd, 
      
        const
      
      
        void
      
       *buf, size_t len, 
      
        int
      
       flags, 
      
        const
      
      
        struct
      
       sockaddr *
      
        from
      
      
        , socklen_t fromlen) 


      
      
        //
      
      
        sockfd表示已經創建好的一個UDP套接字 


      
      
        //
      
      
        to.from用于設置接受方和發送方的地址信息 


      
      
        //
      
      
        tolen,fromlen用于設置地址信息的長度
      
    

例子:

TCP:

?

UDP:

?

?

?

?

Linux 基本網絡編程


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美日本黄色 | 在线播放国产一区二区三区 | 天天摸天天操天天射 | 99久久精品免费看国产一区二区 | 免费看一级黄色毛片 | 99精品视频在线在线视频观看 | 在线播放精品 | 亚洲一区在线免费观看 | 免费观看一级欧美在线视频 | 九九热视频免费在线观看 | 亚洲欧美综合网站 | 免费国产成人午夜在线观看 | 国内精品免费视频 | 午夜骚| 粗大猛烈进出呻吟声的视频 | 青青青青久久精品国产一百度 | 一区二区三区四区在线观看视频 | 久久一区二区三区免费 | 久久婷婷午色综合夜啪 | 九九热视频精品在线观看 | 国产精品爱啪在线线免费观看 | 成人影院久久久久久影院 | 日日摸夜夜嗷嗷叫日日拍 | 亚洲妖精天堂 | 一级做a爱 一区 | 一级毛片不收费 | 天天躁日日躁狠狠躁综合 | 国产毛片a级 | 久久视频免费在线观看 | 最新香蕉97超级碰碰碰碰碰久 | 91精品全国免费观看老司机 | 欧美成人精品不卡视频在线观看 | 国产精品成人观看视频免费 | 96国产xxxx| 久草在线视频中文 | 天天爽夜夜爽视频 | 日本亚洲a | 97视频免费上传播放 | 国产片一级aaa毛片视频 | 在线观看久草 | 中国国产成人精品久久 |