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

國內最全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 閱讀次數:3660次


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

參數:

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产精品久久现线拍久青草 | 秋霞一级在线理论片欧美 | 天堂在线免费 | 91久久精品国产91性色tv | 高清一级做a爱过程免费视频 | 精品日韩在线视频一区二区三区 | 亚洲 日本 欧美 日韩精品 | 又做又爱高清免费观看 | 欧美亚洲日本一区二区三区浪人 | 免费能看的黄色网址 | 波兰性xxxxx极品hd | 国产拍视频 | 日本三线免费视频观看 | 亚洲成人在线视频 | 激情在线视频 | 亚洲欧美日韩在线精品一区二区 | 亚洲aav| 欧美黑人三级 | 周妍希国产福利在线观看 | 春色吧 | 国产精品欧美亚洲韩国日本不卡 | 国产成人在线视频观看 | 亚洲精品一区二区三区在线看 | 国内精品一区二区三区 | www.视频在线观看 | 91精品福利一区二区三区野战 | 欧美日韩精 | 欧美办公室系列激情videos | 3344成年站福利在线视频免费 | 国产美女视频一区二区二三区 | 亚洲精品蜜桃久久久久久 | 欧美一区二区手机在线观看视频 | xxx性欧美 | 日本xxxxxbbbbb精品| 免费欧洲毛片a级视频 | 成人资源在线观看 | 综合图片小说 | 男人都懂的www网站免费观看 | 亚洲免费成人在线 | 亚洲综合二区 | 国语高清精品一区二区三区 |

<td id="hhsdb"><tr id="hhsdb"><th id="hhsdb"></th></tr></td>

  • <track id="hhsdb"><dl id="hhsdb"></dl></track>

    1. <small id="hhsdb"></small>
      1. <td id="hhsdb"></td>

          1. <td id="hhsdb"></td>