Linux學習/TCP程式設計學習筆記

BN宋發表於2024-08-24

函式

socket函式

#include <sys/types.h> 					/* See NOTES */
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
功能: 
	建立一個套接字
引數:
domain:
	AF_INET 這是大多數用來產生socket的協議,使用TCP或UDP來傳輸,用IPv4的地址
	AF_INET6 與上面類似,不過是來用IPv6的地址
	AF_UNIX 本地協議,使用在Unix和Linux系統上,一般都是當客戶端和伺服器在同一臺及其上的時候使用
type:
	SOCK_STREAM 這個協議是按照順序的、可靠的、資料完整的基於位元組流的連線。這是一個使用最多的socket型別,這個socket是使用TCP來進行傳輸。
	SOCK_DGRAM 這個協議是無連線的、固定長度的傳輸呼叫。該協議是不可靠的,使用UDP來進行它的連線。
	SOCK_SEQPACKET該協議是雙線路的、可靠的連線,傳送固定長度的資料包進行傳輸。必須把這個包完整的接受才能進行讀取。
	SOCK_RAW socket型別提供單一的網路訪問,這個socket型別使用ICMP公共協議。(ping、traceroute使用該協議)
	SOCK_RDM 這個型別是很少使用的,在大部分的作業系統上沒有實現,它是提供給資料鏈路層使用,不保證資料包的順序
	
protocol:
	傳0 表示使用預設協議。
返回值:
	成功:返回指向新建立的socket的檔案描述符,失敗:返回-1,設定errno

blind 函式

#include <sys/types.h> 					/* See NOTES */
#include <sys/socket.h>
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
功能:
	將套接字與地址繫結。
	
引數:
	sockfd:
		socket檔案描述符
	addr:
		構造出IP地址加埠號
	addrlen:
		sizeof(sockaddr)長度
返回值:
	成功返回0,失敗返回-1, 設定errno

listen 函式

#include <sys/types.h> 					/* See NOTES */
#include <sys/socket.h>
int listen(int sockfd, int backlog);
sockfd:
	socket檔案描述符
backlog:
	排隊建立3次握手佇列和剛剛建立3次握手佇列的連結數和

accept 函式

#include <sys/types.h> 					/* See NOTES */
#include <sys/socket.h>
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
sockdf:
	socket檔案描述符
addr:
	傳出引數,返回連結客戶端地址資訊,含IP地址和埠號
addrlen:
	傳入傳出引數(值-結果),傳入sizeof(addr)大小,函式返回時返回真正接收到地址結構體的大小
返回值:
	成功返回一個新的socket檔案描述符,用於和客戶端通訊,失敗返回-1,設定errno

connect 函式

#include <sys/types.h> 					/* See NOTES */
#include <sys/socket.h>
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
sockdf:
	socket檔案描述符
addr:
	傳入引數,指定伺服器端地址資訊,含IP地址和埠號
addrlen:
	傳入引數,傳入sizeof(struct sockaddr)大小
返回值:
	成功返回0,失敗返回-1,設定errno

recv 函式

#include <sys/types.h> 					/* See NOTES */
#include <sys/socket.h>
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
功能: 
	接收資料
引數:
	sockfd:  套接字描述符   socket的返回值或者accept返回值
	buf: 接收資料快取
	len: buf的長度
	flags: 接收資料的標誌, 一般預設為0
	
返回值:
	成功: 實際讀到的資料的位元組數, 如果對方已經關閉了 返回0表示讀到結尾
	失敗: -1

send 函式

#include <sys/types.h> 					/* See NOTES */
#include <sys/socket.h>
ssize_t send(int sockfd, const void *buf, size_t len, int flags);
功能: 
	傳送資料
引數:
	sockfd:  套接字描述符  socket的返回值或者accept返回值
	buf: 傳送的資料
	len: 傳送資料的長度
	flags: 傳送資料的標誌 一般預設0
返回值:
	成功: 非零值  實際上傳送資料的位元組數
	失敗: -1

更多

send與recv函式詳解https://zhuanlan.zhihu.com/p/421119248
Linux網路程式設計教程彙總https://blog.csdn.net/dengjin20104042056/article/details/103026352

參考:
https://blog.csdn.net/dengjin20104042056/article/details/107636358

相關文章