怎么获取socket ip 地址

怎么获取socket ip 地址,第1张

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

如果服务器端要获取客户端ip的话:

//假设socket(),bind(),listen()函数已经完成addrlen

=

sizeof(client)connetfd

=

accept(listenfd,(struct

sockaddr

*)&client,&addrlen)那么client.sin_port

就是客户端的端口

client.sin_addr.s_addr

就是客户端的ip。

这两个都是以网络字节序来保存的,如果要printf的话需要先转化为主机字节序


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/348150.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-07
下一篇2023-05-07

发表评论

登录后才能评论

评论列表(0条)

    保存