函式
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