TCP客户端和服务器通讯流程
- 创建套接字—socket
int socket(int af, int type, int protocol);
-
- AF_UNIX(本机通信)
AF_INET(TCP/IP – IPv4)
AF_INET6(TCP/IP – IPv6)
-
- SOCK_STREAM(流格式套接字/面向连接的套接字)
SOCK_DGRAM(数据报套接字/无连接的套接字)
-
- protocol 表示传输协议,常用的有 IPPROTO_TCP 和 IPPTOTO_UDP
返回值:如果函数调用成功,会返回一个标识这个套接字的文件描述符,失败的时候返回-1
- 连接—connet
int connect(int sockfd, const struct sockaddr *servaddr, int *addrlen);
返回:若成功则返回0,失败则返回-1;
-
- sockfd是有socket函数返回的套接字描述符
- 套接字地址结构
- 套接字地址结构大小
- 绑定—bind
int bind(int sockfd, const struct sockaddr, socklen_t addrlen);
- 监听—listen
int listen(int sockfd, int backlog);
backlog—允许监听排队的个数;
- 接受—accept
int accept(int sockfd, struct sockaddr * addr, int * addrlen);
- Fork(创建进程)
- Exec(调用进程)
- close(关闭套接字)
- getsockname(获取服务器IP地址和端口号)
getpeername(获取客户端IP地址和端口号)