日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 1.socket編程:socket編程,網絡字節序,函數介紹,IP地址轉換函數,sockaddr數據結構,網絡套接字函數,socket相關函數,TCP serv

1.socket編程:socket編程,網絡字節序,函數介紹,IP地址轉換函數,sockaddr數據結構,網絡套接字函數,socket相關函數,TCP serv

來源:程序員人生   發布時間:2014-09-30 05:39:05 閱讀次數:3669次


1  Socket編程

socket這個詞可以表示很多概念:

TCP/IP協議中,“IP地址+TCPUDP端口號”唯一標識網絡通訊中的一個進程,“IP

地址+端口號”就稱為socket

TCP協議中,建立連接的兩個進程各自有一個socket來標識,那么這兩個socket組成的socket pair就唯一標識一個連接。socket本身有“插座”的意思,因此用來描述網絡連

接的一對一關系。

TCP/IP協議最早在BSD UNIX上實現,為TCP/IP協議設計的應用層編程接口稱為socket

API

本章的主要內容是socketAPI,主要介紹TCP協議的函數接口,最后介紹UDP協議和UNIX Domain Socket的函數接口。

11.1socketAPI

2 網絡字節序

我們已經知道,內存中的多字節數據相對于內存地址有大端和小端之分,磁盤文件中的

多字節數據相對于文件中的偏移地址也有大端小端之分。網絡數據流同樣有大端小端之分,

那么如何定義網絡數據流的地址呢?發送主機通常將發送緩沖區中的數據按內存地址從低到高的順序發出,接收主機把從網絡上接到的字節依次保存在接收緩沖區中,也是按內存地址從低到高的順序保存,因此,網絡數據流的地址應這樣規定:先發出的數據是低地址,后發出的數據是高地址。

    TCP/IP協議規定,網絡數據流應采用大端字節序,即低地址高字節。例如上一節的UDP

段格式,地址0-116位的源端口號,如果這個端口號是10000x3e8),則地址00x03

地址10xe8,也就是先發0x03,再發0xe8,這16位在發送主機的緩沖區中也應該是低地址存0x03,高地址存0xe8。但是,如果發送主機是小端字節序的,這16位被解釋成0xe803,而不是1000。因此,發送主機把1000填到發送緩沖區之前需要做字節序的轉換。同樣地,接收主機如果是小端字節序的,接到16位的源端口號也要做字節序的轉換。如果主機是大端字節序的,發送和接收都不需要做轉換。同理,32位的IP地址也要考慮網絡字節序和主機字節序的問題。

 

為使網絡程序具有可移植性,使同樣的C代碼在大端和小端計算機上編譯后都能正常運行,可以調用以下庫函數做網絡字節序和主機字節序的轉換。

3 函數介紹

A 依賴的頭文件

#include <arpa/inet.h>

B 函數聲明

#include <arpa/inet.h>

uint32_t htonl(uint32_t hostlong);

uint16_t htons(uint16_t hostshort);

uint32_t ntohl(uint32_t netlong);

uint16_t ntohs(uint16_t netshort);

h表示hostn表示networkl表示32位長整數,s表示16位短整數。

如果主機是小端字節序,這些函數將參數做相應的大小端轉換然后返回,如果主機是大端字節序,這些函數不做轉換,將參數原封不動地返回。

 

uint32_t htonl(uint32_t hostlong);

名稱:

htonl

功能:

The htonl() function converts the unsigned integer hostlong  from  host byte order to network byte order

頭文件:

#include <arpa/inet.h>

函數原形:

uint32_t htonl(uint32_t hostlong);

參數:

 

返回值:

 

 

uint16_t htons(uint16_t hostshort);

名稱:

htons

功能:

The htons() function converts the unsigned short integer hostshort from

host byte order to network byte order.

頭文件:

#include <arpa/inet.h>

函數原形:

uint16_t htons(uint16_t hostshort);

參數:

 

返回值:

 

 

uint32_t ntohl(uint32_t netlong);

      名稱:

      ntohl

      功能:

      The ntohl() function converts the unsigned integer netlong from network

      byte order to host byte order.

      頭文件:

      #include <arpa/inet.h>

      函數原形:

      uint32_t ntohl(uint32_t netlong);

      參數:

      生活不易,碼農辛苦
      如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
      程序員人生
      ------分隔線----------------------------
      分享到:
      ------分隔線----------------------------
      關閉
      程序員人生
      主站蜘蛛池模板: 黄色av网站在线免费观看 | 精品久久久久久亚洲精品 | 免费看的av | 午夜精品久久久久久久蜜桃 | 亚洲精品久久久久久久久久久久久 | 瑟瑟视频在线观看 | 亚洲精选一区 | 国产精品久久久av | 3344成人免费高清免费视频 | 久久久免费毛片 | 麻豆传媒视频 | 久热伊人 | 国产精品亚洲一区二区三区在线观看 | 精品日韩| 五月激情网址 | 国产一区二区高清 | 欧美日韩国产精品 | 久久久久久国产精品 | 国产一区欧美 | 一区二区三区不卡视频在线观看 | 亚洲欧美一区二区三区在线 | 国产精品成人品 | 黄色一级片在线观看 | 亚洲在线一区二区 | 深夜视频一区二区 | 一级视频在线观看 | 中文字幕一二三 | 免费成人av在线 | 国产一区二区在线看 | 九九视频在线 | 日韩久久视频 | 爱爱视频在线观看 | 日韩网站免费 | 久热久热| 精品国产一区二区三区久久久久久 | 亚洲欧美久久 | 国产免费小视频 | 国产精品一区二区三区四区 | 狠狠搞狠狠搞 | 国产精品视频成人 | 国产精品爽爽爽爽爽爽在线观看 |
      <pre id="xjelh"><tt id="xjelh"></tt></pre>
        <menuitem id="xjelh"></menuitem>
          <menuitem id="xjelh"><font id="xjelh"><del id="xjelh"></del></font></menuitem>