朱有鵬 socket程式設計介面介紹(3)

2021-09-01 06:07:44 字數 1363 閱讀 3701

朱有鵬 socket程式設計介面介紹(3)

建立連線

socket()函式類似於open()函式,用來開啟乙個網路連線,如果成功則返回乙個網路檔案描述符(int型別),之後我們操作這個網路連線都通過這個網路檔案描述符。

#include

int socket(int domain, int type, int protocol);

domain:域,網路範圍(ipv4,ipv6)

type:指定型別

protocol:指定協議

int bind(int socket, const struct sockaddr *address, socklen_t address_len)

sockaddr:不區分ipv4和ipv6

socklen_t :sockaddr結構體的長度

int listen(int socket, int backlog)

backlog:表示可以監聽幾個,監聽佇列長度

連線伺服器

int connect(int socket, const struct sockaddr *address, socklen_t address_len)

傳送和接收

send和write

recv和read

輔助性函式

inet_aton、inet_addr、inet_ntoa

inet_ntop(32位二進位制轉成點分十進位制)、inet_pton(點分十進位制轉成32位二進位制)

表示ip位址相關資料結構

(1)都定義在netinet/in.h(/usr/include/netinet/in.h)

(2)struct sockaddr,這個結構體是網路程式設計介面中用來表示乙個ip位址的,注意這個ip位址是不區分ipv4和ipv6的(或者說是相容ipv4和ipv6的)

(3)typedef unit32_t in_addr_t;      網路內部用來表示ip位址的型別

(4)structin_addr

in_addr_ts_addr;

(5)struct sockaddr_in

structsockaddr_in

;(6)struct sockaddr

這個結構體是linux的網路程式設計介面中用來表示ip位址的標準結構體。bind、connect等函式中都需要這個結構體,這個結構體是相容ipv4和ipv6的。在實際程式設計中,這個結構體會被乙個struct sockaddr_in或者乙個struct sockaddr_in6所填充。

朱有鵬 TCP協議(1)

朱有鵬 tcp協議 1 關於tcp 1 tcp協議工作在傳輸層,對上服務socket介面,對下呼叫ip層 2 tcp協議面向連線,通訊前必須先3次握手建立連線關係後才能開始通訊。在通訊之前,必須建立乙個連線。打 3 tcp協議提供可靠傳輸,不怕丟包 亂序等。tcp協議就是一堆 這堆 實現乙個協議。t...

自己動手安裝交叉編譯工具鏈(朱有鵬裸機課程筆記)

四 交叉編譯工具鏈安裝詳細步驟 步驟1 想辦法將widows中朱老師給的資料光碟a盤tool chain裡的arm 2009q3.tar.bz2弄到linxu中。辦法是可以用共享資料夾,也可以用samba或者cuteftp。我們用的是共享資料夾。在widows指定的位置建立乙個winshare資料夾...

學習朱有鵬老師的看門狗定時器

看門狗定時器典型應用場景 我們在應用程式中開啟看門狗裝置,初始化好,給它乙個實踐,然後應用程式使用乙個執行緒來餵狗,這個執行緒的執行時間安全短於看門狗的復位實踐。當系統 或者應用程式 異常後,餵狗執行緒自然就停止工作了,然後看門狗就復位了。s5pv210的看門狗定時器共有4個暫存器 1.wtcon ...