多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

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

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

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


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);

    參數:

    生活不易,碼農辛苦
    如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
    程序員人生
    ------分隔線----------------------------
    分享到:
    ------分隔線----------------------------
    關閉
    程序員人生
    主站蜘蛛池模板: 俄罗斯videosex性欧美黑吊 | 伊人伊网 | 国产成人精品免费视频大全办公室 | 精品国产免费人成在线观看 | 日本成人在线网站 | 精品一区国产 | 亚洲国产成人精品不卡青青草原 | 免费在线观看黄色的网站 | 国产国产人在线成免费视频69 | 亚洲精品色一区二区三区 | 中文字幕视频一区 | 久久精品国内偷自一区 | 国产成人精品亚洲一区 | 久久精品a一国产成人免费网站 | 欧美一级一毛片 | 激情视频网站在线观看 | 91精品福利一区二区三区野战 | 亚洲欧美日韩国产精品久久 | 亚洲全网成人资源在线观看 | 国产精品网站在线观看 | 亚洲国产精品人久久 | 欧美色视频网 | 精品播放 | 五月丁香六月综合缴清无码 | 欧美一级毛片香蕉网 | 午夜免费福利 | 自拍偷拍视频网 | 中国国产一级毛片 | 亚洲欲色 | 欧美性a欧美在线 | 日韩欧美亚洲综合一区二区 | 噜啪啪 | 欧美free三人性高清 | 国产精品视频第一区二区三区 | a天堂视频| 欧美v片 | 久草成人在线 | 亚洲久久久久久久 | 欧美精品18videos性欧美 | 操操综合网 | 国产午夜精品免费一二区 |
  • <span id="39hjy"></span>
      1. <span id="39hjy"><th id="39hjy"></th></span>
        1. <sub id="39hjy"><input id="39hjy"></input></sub>
            • <rt id="39hjy"><form id="39hjy"></form></rt>