多进程并发TCP服务器模型(含客户端)(网络编程 C语言实现)

本文介绍了如何使用C语言实现多进程并发TCP服务器,通过每连接一个客户端创建一个子进程来处理通信,详细讲解了socket、bind、listen、accept等关键函数的使用,并提供了服务器和客户端的代码示例。
摘要由CSDN通过智能技术生成

摘要:大家都知道不同pc间的通信需要用到套接字sockte来实现,但是服务器一次只能收到一个客户端发来的消息,所以为了能让服务器可以接收多个客户端的连接与消息的传递,我们就引入了多进程并发这样一个概念。听名字就可以知道--需要用到进程,当然也有多线程并发今天我们讲进程的就可以了,线程的同理。

        基本原理: 每连接一个客户端,创建一个子进程,子进程负责处理connfd(客户请求) 
父进程处理sockfd(连接请求)。

常用函数

socket() 创建套接字
bind() 绑定本机地址和端口
connect() 建立连接
listen() 设置监听套接字
accept() 接受TCP连接
recv(), read(), recvfrom() 数据接收
send(), write(), sendto() 数据发送
close(), shutdown() 关闭套接字
 

各函数使用方法和参数返回值

socket() 创建套接字

int socket (int domain, int type, int protocol);
domain 是地址族
PF_INET // internet 协议
PF_UNIX // unix internal协议
PF_NS // Xerox NS协议
PF_IMPLINK // Interface Message协议
type // 套接字类型
SOCK_STREAM // 流式套接字
SOCK_DGRAM // 数据报套接字
SOCK_RAW // 原始套接字
protocol 参数通常置为0

connect() 建立连接

int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);
返回值:0 或 -1
sockfd : socket返回的文件描述符
serv_addr : 服务器端的地址信息
addrlen : serv_addr的长度

bind() 绑定本机地址和端口

int bind (int sockfd, struct sockaddr* addr, int addrLen);
sockfd 由socket() 调用返回
addr 是指向 sockaddr_in 结构的指针,包含本机IP 地址和端口号
struct sockaddr_in
                u_short sin_family // protocol family
                u_short sin_port // port number
                struct in_addr sin_addr //IP address (32-bits)
addrLen : sizeof (struct sockaddr_in)


listen() 设置监听套接字

sockfint listen (int sockfd, int backlog);

sockfd:监听连接的套
  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值