#! https://zhuanlan.zhihu.com/p/538246981
socket通信-多进程
通过多进程的方式实现,主进程进入监听模式后,每监听到一个客户端连接请求就创建一个新的进程去处理接收客户端发送的内容。
socket通信流程:
- 调用socket()函数打开套接字,得到套接字描述符;
- 调用bind()函数将套接字与IP地址、端口号进行绑定;
- 调用listen()函数让服务器进入监听状态;
- 调用accept()函数获取客户端的链接请求并建立链接;
- 调用read/recv、write/send与客户端进行通信;
- 调用close()函数关闭套接字
代码实现
打开套接字,得到套接字描述符
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(0 > sockfd)
{
perror("socket error");
exit(EXIT_FAILURE);
}
socket_addr 结构体
struct sockaddr_in
{
sa_family_t sin_family; /* 协议族 */
in_port_t sin_port; /* 端口号 */
struct in_addr sin_addr; /* IP 地址 */
unsigned char sin_zero[8];
};
函数将套接字与IP地址、端口号进行绑定
struct sockaddr_in server_addr = {
0}; //定义服务器地址
server_addr.sin_family = AF_INET; //协议簇
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);