发布网友 发布时间:2022-04-22 08:27
共1个回答
热心网友 时间:2022-06-18 15:15
你是想知道代码还是想了解原理,一般的C/S模型都由客户端发出连接请求(客户端在代码中都是存有服务器端的具体ip地址和端口信息(也就是服务器端的INET协议族地址结构)的),当客户端发送连接请求后,服务器端通过a*et函数接收连接请求,a*et函数示例:accept(ServerSocket,(structsockaddr*)&from,&len)(from是一个INET协议族地址结构变量,(structsockaddr*)的作用是把INET协议族地址结构强制转换为通用地址结构),a*et函数在接收连接的同时会把客户端的具体ip和端口信息赋值给from,所以说客户端socket连接的ip(非绑定的话客户机随机绑定ip和端口)是包含在连接报文数据里,服务器端只有接收到客户端发送的连接信息后,才会获得客户端的ip和端口信息,获得具体ip的方式是通过函数,这个函数可以提取出IPv4地址结构中的点分十进制地址,函数用法:inet_ntoa(from.sin_addr)。