基于TEC传输层的编程模型

基于TEC传输层的编程模型

服务器端编程模型

  1. 创建一个用于网络通讯的设备 通讯端点 socket(2)
  2. 将这个通讯端点和本机的ip地址、端口号绑定 bind(2)
  3. 在这个通讯端点上监听客户端连接的到来,放入缓冲区队列 listen(2)
  4. 从缓冲区队列中取出一个客户端连接,返回连接描述符 accept(2)
  5. 使用连接描述符和客户端通讯 read(2) write(2)
  6. 关闭连接描述符,终止和客户端的通讯 close(2)

客户端编程模型

  1. 创建一个用于网络通讯的设备(通讯端点) socket(2)
  2. 使用这个端点连接到服务器(IP地址和端口号) connet(2)
  3. 向服务器发送消息
  4. 等待服务器端的响应消息
  5. 处理服务器的响应消息
  6. 关闭设备,结束本次通讯。
#include 
#include 
int socket(int domain, int type, int protocol);
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
int listen(int sockfd, int backlog);
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

#include 
ssize_t write(int fd, const void *buf, size_t count);
ssize_t read(int fd, void *buf, size_t count);
int close(int fd);

地址家族的通用结构

struct sockaddr{
  sa_family_t sa_family;
  char        sa_data[14];
};

ipv4的具体地址

man in.h
#include 
in_port_t    uint16_t
in_addr_t    uint32_t
sa_family_t  

struct in_addr{
  in_addr_t  s_addr;
};
struct sockaddr_in{
  sa_family_t     sin_family;   //AF_INET.
  in_port_t       sin_port;     //Port number.
  struct in_addr  sin_addr;     //IP address.
};

本机字节序和网络字节序的转换

#include 
uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);

你可能感兴趣的:(基于TEC传输层的编程模型)