基本TCP套接字程式設計
阿新 • • 發佈:2018-12-13
1. socket函式原型:
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
2. bind函式原型:
#include <sys/socket.h>
int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);
引數:
struct sockaddr_in { sa_family_t sin_family; /* 地址族: AF_INET */ u_int16_t sin_port; /* 按網路位元組次序的埠 */ struct in_addr sin_addr; /* internet地址 */ }; struct in_addr { u_int32_t s_addr; /* 按網路位元組次序的地址 */ };
3. listen函式原型: 設定同時與伺服器連線上的上限數(同時進行3次握手的客戶端數量)
#include <sys/socket.h>
int listen(int s, int backlog);
引數:
- backlog:核心為相應套接字排隊的最大連線數
4. accept函式原型:阻塞等待客戶端建立連線,成功的話,返回一個與客戶端成功連線的socket檔案描述符
#include <sys/socket.h> int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
引數:
- sockfd:socket函式返回值
- addr:傳出引數——成功與伺服器建立連線的那個客戶端的地址結構(IP + port)
- addrlen:傳入傳出。入:addr的大小。出:客戶端addr實際大小
- 成功:能與伺服器進行資料通訊的socket對應的檔案描述符
5. connect函式原型:
#include <sys/socket.h>
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
引數:
- socket函式返回值
- addr:傳入引數——伺服器地址結構
- addrlen:伺服器的地址結構大小
注意:如果不使用bind客戶端地址結構,採用隱式繫結