如何通过Socket获得所有客户端连接的IP地址

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过Socket获得所有客户端连接的IP地址相关的知识,希望对你有一定的参考价值。

参考技术A 如果服务器端要获取客户端ip的话:
//假设socket(),bind(),listen()函数已经完成addrlen
=
sizeof(client);connetfd
=
accept(listenfd,(struct
sockaddr
*)&client,&addrlen);那么client.sin_port
就是客户端的端口
client.sin_addr.s_addr
就是客户端的ip。
这两个都是以网络字节序来保存的,如果要printf的话需要先转化为主机字节序

如何获得真实 IP? [关闭]

【中文标题】如何获得真实 IP? [关闭]【英文标题】:how can I get Real IP? [closed] 【发布时间】:2013-03-28 07:11:00 【问题描述】:

我开发了一个网站。我使用 $_SERVER 变量来查找客户端的 IP。刷新互联网连接时,它显示不同的IP。如何获取真实IP,让客户在一台电脑上只能注册一个账号?

【问题讨论】:

你不能。它永远不会起作用。你认为现在每个人都有静态 IP 吗? Pitchinnate 的说法是正确的,因为用户可以通过代理、*** 或隧道进行连接,并拥有完全不同的 IP 地址。 【参考方案1】:

很遗憾,无法保证一台计算机(或用户)只会注册一个帐户。即使您的大多数用户都有一个固定的 IP 地址,想要破坏您的系统的人也只会想方设法通过不同的路线连接到您的网站,这样您的支票就不会意识到他们每次都是同一个人。

您可以将您的系统设计为需要一个有效的电子邮件地址,这将减少篡改量,但不会阻止有决心的人使用一次性电子邮件地址在您的网站上注册多个帐户。

【讨论】:

作为此答案的最新更新,我将补充一点,我目前为一家使用代理服务的公司工作,以允许其使用数十个不同的 IP 地址访问和注册目标网站。目标公司并不总是很喜欢它,但英国法律似乎允许这样做。一些公司经常蠕动和阻止 IP 地址,但很容易切换到一组不同的代理并几乎立即重新获得访问权限。尝试按 IP 地址过滤永远不会让确定的客户端拖慢很长时间。

以上是关于如何通过Socket获得所有客户端连接的IP地址的主要内容,如果未能解决你的问题,请参考以下文章

Socket 如何知道断开连接的客户端ip地址

Boost asio socket:如何获取IP,连接的端口地址?

php socket 获取客户端ip地址

由路由器连接的电脑如何socket实现网络通信

如何获取PHP客户端及服务器端IP了?

socket编程:bind函数是把socket绑定到具体窗口?