朱有鵬 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 ...