1. 程式人生 > >基本TCP套接字程式設計

基本TCP套接字程式設計

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客戶端地址結構,採用隱式繫結