# socket通信-多进程

本文介绍了如何使用多进程实现socket通信。服务器在监听模式下,每当接收到客户端连接请求时,就会创建一个新的进程来处理接收客户端发送的消息。详细流程包括打开套接字、绑定IP地址和端口、监听连接、接受连接请求以及读写通信。
摘要由CSDN通过智能技术生成

#! https://zhuanlan.zhihu.com/p/538246981

socket通信-多进程

通过多进程的方式实现,主进程进入监听模式后,每监听到一个客户端连接请求就创建一个新的进程去处理接收客户端发送的内容。

socket通信流程:

  1. 调用socket()函数打开套接字,得到套接字描述符;
  2. 调用bind()函数将套接字与IP地址、端口号进行绑定;
  3. 调用listen()函数让服务器进入监听状态;
  4. 调用accept()函数获取客户端的链接请求并建立链接;
  5. 调用read/recv、write/send与客户端进行通信;
  6. 调用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); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值