#include <sys/types.h>
#include <sys/socket.h>
函數原型:(建立一個套接口)
int socket(int family, // 協議類型,通常爲AF_INET服務器
int type, // socket類型:SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET網絡
int protocol // 用來指定socket所使用的傳輸協議編號,一般設爲0便可,表示缺省socket
); // 若無錯誤發生,socket()返回引用新套接口的描述字; 不然,返回INVALID_SOCKET錯誤函數
#include <sys/types.h> ui
#include <sys/socket.h>指針
函數原型:(經過給一個未命名套接口分配一個本地名字來爲套接口創建本地捆綁(主機地址/端口號))
server
int bind(int sockfd, // socket描述符htm
struct sockaddr *my_addr, // 是一個指向包含有本機ip地址和端口號等信息的sockaddr類型的指針接口
int addrlen // 常被設爲sizeof(struct sockaddr)隊列
); // 返回:成功返回0,失敗返回-1
#include <sys/socket.h>
函數原型:(建立一個套接字並監聽申請的鏈接。僅適用於支持鏈接的套接口,如SOCK_STREAM類型的)
int listen(int sockfd, // socket()系統調用返回的socket描述符
int backlog // 指定在請求隊列中的最大請求數,進入的鏈接請求將在隊列中等待accept()它們。
); // 如無錯誤發生,返回0;不然返回-1
#include <sys/types.h>
#inlcude <sys/socket.h>
函數原型:(在一個套接口接受一個鏈接)
int accept(int sockfd, // 是被監聽的socket描述符
void *addr, // 一般是一個指向sockaddr_in變量的指針,該變量用來存放提出鏈接請求服務的主機的信息
int addrlen // sizeof(struct sockaddr_in)
); // 成功則返回一個socket實例,server纔可以和client進行通訊;錯誤則返回INVALID_SOCKET錯誤
#include <sys/types.h>
#include <sys/socket.h>
函數原型:(用於創建與指定socket的鏈接)
int connect(int sockfd, // 目的服務器的socket描述符
struct sockaddr *serv_addr, // 包含目的機器ip地址和端口號的指針
int addrlen // addrlen:sizeof(struct sockaddr)
); // 若無錯誤發生,則connect()返回0。不然的話,返回SOCKET_ERROR錯誤(通常小於0)
#include <sys/socket.h>
函數原型:(用於向一個已經鏈接的socket發送數據)
int send(int sockfd, // 用來傳輸數據的socket描述符
const void *msg, // 要發送數據的指針(緩衝區)
int len, // 發送數據的長度
int flags // 調用執行方式,通常爲0
); // 若是無錯誤,返回值爲所發送數據的總數,不然返回SOCKET_ERROR。
#include <sys/types.h>
#include <sys/socket.h>
函數原型:(用於接收一個已經鏈接的socket發送的數據)
int recv(int sockfd, // 接收數據的socket描述符
void *buf, // 存放數據的緩衝區
int len, // 緩衝的長度
unsigned int flags // 調用執行方式,通常爲0
); // 若無錯誤發生,recv()返回讀入的字節數;若是鏈接已停止,返回0;不然返回SOCKET_ERROR錯誤。
read() write()
int read(int fd, char *buf, int len); // 成功返回讀取的字節數;出錯返回-1並設置errno;若是在調read以前已到達文件末尾,則此次read返回0。
int write(int fd, char *buf, int len);
shutdown()
close(sockfd)
int shutdown(int sockfd, int how)
#include <sys/socket.h>
ssize_t recvfrom(int sockfd, void *buf, size_t nbytes, int flags, struct sockaddr *from, socklen_t *addrlen);
ssize_t sendto(int sockfd, const void *buff, size_t nbytes, int flags, const struct sockaddr *to, socklen_t *addrlen);
// 成功則返回讀、寫的字節數,出錯則爲-1。
第一個參數sockfd:描述符;
第二個參數buff:指向讀入或寫出的緩衝區的指針;
第三個參數nbytes:讀寫字節數;
第四個參數flags:調用操做方式;
第五個參數from/to:指向數據報發送者或接收者的協議地址(如IP地址和端口號)的套接字地址結構;
第六個參數addrlen:from/to參數的大小。
int getsockname(int sockfd, struct sockaddr *localaddr, socklen_t *addrlen); // 獲取與某個套接字關聯的本地協議地址
int getpeername(int sockfd, struct sockaddr *localaddr, socklen_t *addrlen); // 獲取與某個套接字關聯的外地協議地址
#include <sys/select.h>
#include <signal.h>
signal(參數1,參數2);
參數1:處理的信號。系統的信號通常爲宏定義。
參數2:處理的方式(是系統默認仍是忽略仍是捕獲)。
例如signal(SIGINT ,SIG_ING);
SIG_ING 表明忽略SIGINT信號,SIGINT信號表明由InterruptKey產生,一般是CTRL +C 或者是DELETE 。發送給全部ForeGround Group的進程。