linux的socket API有哪些關(guān)鍵函數(shù)

小樊
83
2024-09-16 10:51:48

Linux的socket API主要包括以下幾個(gè)關(guān)鍵函數(shù):

  1. socket():創(chuàng)建一個(gè)新的socket。這個(gè)函數(shù)需要指定協(xié)議族(如AF_INET表示IPv4,AF_INET6表示IPv6)、socket類(lèi)型(如SOCK_STREAM表示TCP流,SOCK_DGRAM表示UDP數(shù)據(jù)報(bào))和協(xié)議號(hào)(通常為0,表示由操作系統(tǒng)自動(dòng)選擇合適的協(xié)議)。成功時(shí)返回一個(gè)非負(fù)整數(shù),表示socket的文件描述符;失敗時(shí)返回-1并設(shè)置errno。
  2. bind():將socket與一個(gè)本地地址和端口綁定。這個(gè)函數(shù)需要傳入一個(gè)socket文件描述符、一個(gè)指向sockaddr結(jié)構(gòu)體的指針(包含了地址和端口信息)以及該結(jié)構(gòu)體的大小。成功時(shí)返回0;失敗時(shí)返回-1并設(shè)置errno。
  3. connect():連接到一個(gè)遠(yuǎn)程地址和端口。這個(gè)函數(shù)需要傳入一個(gè)socket文件描述符、一個(gè)指向sockaddr結(jié)構(gòu)體的指針(包含了遠(yuǎn)程地址和端口信息)以及該結(jié)構(gòu)體的大小。成功時(shí)返回0;失敗時(shí)返回-1并設(shè)置errno。
  4. listen():將socket設(shè)置為監(jiān)聽(tīng)模式,等待客戶端連接。這個(gè)函數(shù)需要傳入一個(gè)socket文件描述符和一個(gè)整數(shù)backlog,表示可以同時(shí)處理的最大連接請(qǐng)求數(shù)。成功時(shí)返回0;失敗時(shí)返回-1并設(shè)置errno。
  5. accept():接受一個(gè)來(lái)自客戶端的連接請(qǐng)求。這個(gè)函數(shù)需要傳入一個(gè)socket文件描述符、一個(gè)指向sockaddr結(jié)構(gòu)體的指針(用于存儲(chǔ)客戶端地址信息)以及一個(gè)指向整數(shù)的指針(用于存儲(chǔ)客戶端地址結(jié)構(gòu)體的大?。?。成功時(shí)返回一個(gè)新的socket文件描述符,表示與客戶端的連接;失敗時(shí)返回-1并設(shè)置errno。
  6. send()/sendto():發(fā)送數(shù)據(jù)。send()函數(shù)用于TCP連接,需要傳入一個(gè)socket文件描述符、一個(gè)指向數(shù)據(jù)的指針、數(shù)據(jù)長(zhǎng)度以及一組標(biāo)志位。sendto()函數(shù)用于UDP數(shù)據(jù)報(bào),除了需要傳入一個(gè)socket文件描述符、一個(gè)指向數(shù)據(jù)的指針、數(shù)據(jù)長(zhǎng)度以外,還需要傳入一個(gè)指向目標(biāo)地址的指針和目標(biāo)地址結(jié)構(gòu)體的大小。成功時(shí)返回實(shí)際發(fā)送的字節(jié)數(shù);失敗時(shí)返回-1并設(shè)置errno。
  7. recv()/recvfrom():接收數(shù)據(jù)。recv()函數(shù)用于TCP連接,需要傳入一個(gè)socket文件描述符、一個(gè)指向接收緩沖區(qū)的指針、緩沖區(qū)大小以及一組標(biāo)志位。recvfrom()函數(shù)用于UDP數(shù)據(jù)報(bào),除了需要傳入一個(gè)socket文件描述符、一個(gè)指向接收緩沖區(qū)的指針、緩沖區(qū)大小以外,還需要傳入一個(gè)指向源地址的指針和源地址結(jié)構(gòu)體的大小。成功時(shí)返回實(shí)際接收的字節(jié)數(shù);失敗時(shí)返回-1并設(shè)置errno。
  8. close():關(guān)閉一個(gè)socket。這個(gè)函數(shù)需要傳入一個(gè)socket文件描述符。成功時(shí)返回0;失敗時(shí)返回-1并設(shè)置errno。

這些函數(shù)是使用Linux socket API進(jìn)行網(wǎng)絡(luò)編程的基礎(chǔ),可以實(shí)現(xiàn)各種網(wǎng)絡(luò)應(yīng)用,如TCP服務(wù)器、UDP客戶端等。

0