12.进程间通信---网络通信(TCP协议,一对多)

本文详细介绍了基于TCP协议的编程模型,包括服务器端的创建socket、监听、响应客户端请求及通信等步骤,以及客户端的创建socket、连接服务器和通信流程。同时提供了主要函数如listen、accept、send/recv等的用法说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于TCP协议的编程模型
1 编程模型(重点掌握)
服务器:
   (1)创建socket,使用socket函数
   (2)准备通信地址,使用结构体类型
   (3)绑定socket和通信地址,使用bind函数
   (4)监听,使用listen函数
   listen函数
   #include <sys/types.h> 
   #include <sys/socket.h>
   int listen(int sockfd, int backlog);
第一个参数:socket描述符,socket函数的返回值
第二个参数:允许排队等待被响应的最大连接数
函数功能:主要用于监听指定socket上的连接请求

   

(5)响应客户端的连接请求,使用accept函数

   accept函数
   #include <sys/types.h> 
   #include <sys/socket.h>
   int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
第一个参数:socket描述符,socket函数的返回值
第二个参数:结构体指针,用于存储客户端的通信地址
第三个参数:通信地址的大小,客户端的地址大小
返回值:成功返回一个socket描述符,失败返回-1
函数功能:主要用于响应指定socket上的连接请求

   (6)进行通信,使用send/recv函数

send函数
   #include <sys/types.h>
   #include <sys/socket.h>
   ssize_t send(int sockfd, const void *buf, size_t len, int flags);
第一个参数:socket描述符,accept函数的返回值
第二个参数:具体的缓冲区首地址(存放即将发送的数据内容)
第三个参数:即将发送的数据大小
第四个参数:发送的标志,默认给0即可
返回值:成功返回实际发送的数据大小,失败返回-1;
函数功能:
   主要用于将指定的消息发送到指定的socket上;

recv函数
   #include <sys/types.h>
   #include <sys/socket.h>
   ssize_t recv(int sockfd, void *buf, size_t len, int flags);
第一个参数:socket描述符,accept函数的返回,主动的socket
第二个参数:缓冲区的首地址,用于存放接收到的消息
第三个参数:期望接收的数据大小
第四个参数:具体的接收方式,默认给0即可
返回值:成功返回实际接收的数据大小,失败返回-1;
        当对方关闭时,该函数的返回值为0;
函数功能:
   主要用于从指定的socket上接收指定的消息;

   (7)关闭socket,使用close函数
客户端:  
   (1)创建socket,使用socket函数
   (2)准备通信地址,是服务器的地址
   (3)连接socket和通信地址,使用connect函数
   (4)进行通信,使用send/recv函数
   (5)关闭socket,使用close函数


注意:
   socket函数创建的socket主要用于监听连接数
   accept函数创建的socket主要用于与客户端通信
   
   
inet_ntoa函数
   char *inet_ntoa(struct in_addr in);
=> 主要用于将结构体类型的IP地址转换为字符串类型
in_addr_t inet_addr(const char *cp)
=> 主要用于将字符串类型的IP地址转化为整数类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值