1. 客服端和服务端建立TCP连接后,怎么从服务端获取客户端的IP地址
Socket clientSock = ServerSocket.Accpet();
接受客户端连接
DateTime connectTime = DateTime.Now;
连接一个客户端后,当前时间就是连接时间。
(clientSock.RemoteEndPoint as IPEndPoint).IPAddress;
ip地址
(clientSock.RemoteEndPoint as IPEndPoint).Port;
端口号
2. 如何通过Socket获得所有客户端连接的IP地址
如果服务器端要获取客户端ip的话:
//假设socket(),bind(),listen()函数已经完成addrlen
=
sizeof(client);connetfd
=
accept(listenfd,(struct
sockaddr
*)&client,&addrlen);那么client.sin_port
就是客户端的端口
client.sin_addr.s_addr
就是客户端的ip。
这两个都是以网络字节序来保存的,如果要printf的话需要先转化为主机字节序
3. 如何获取客户端IP,WEB服务器IP
客户端 IP 地址是通过 CGI 变量 REMOTE_ADDR 得到的,这个是 HTTP 服务器负责提供。 HTTP 服务器和客户端浏览器之间存在 socket 连接,socket 连接信息包含了另一侧的 IP 地址和端口。
当然,最终用户如果是通过代理服务器访问怎么办呢?目前主流的 HTTP 代理服务器都支持在 HTTP 报头添加 X-Forwarded-For 信息,这可以是一个列表,如果所有的代理
4. 一台主机上网采用自动获取IP地址的方式,如何简要描述其获取地址的过程及所采用协议工作方式
主机获取地址的过程及所采用协议工作方式:
发现阶段:即DHCP客户机寻找DHCP服务器的阶段。DHCP客户机以广播的方式发送DHCP discover 发现信息来寻找DHCP服务器(因为DHCP服务器的IP地址对客户机来说是未知的)。
即向255.255.255.255发送特定的广播信息,网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会作出响应。
提供阶段:即DHCP服务器提供IP地址的阶段。在网络中收到DHCP discover发现信息的DHCP服务器都会作出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置额DHCP offer提供信息。
选择阶段:DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。 如果有多台DHCP服务器向DHCP客户机发来的DHCP offer,客户机只接收第一个收到的DHCP offer,然后它以广播的方式回答一个DHCP request请求信息。
该信息中包含它所选定的DHCP服务器请求IP地址的内容。
之所以要以广播的方式回答,是为了通知所有的DHCP服务器,它将选择某台DHCP服务器所提供的IP地址。
总结如下:
DHCP服务器向DHCP客户机出租的IP地址一般都由一个租借期限,期满后DHCP服务器会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送其更新租约的信息。
5. 如何获取客户端和服务器ip地址
您好,.X.XXX.XXX系列IP,而这个函数获取的是局域网网关出口的IP地址,如果访问者使用代理服务器,将不获取代理服务器的IP,而是获取访问者网关的真实IP。如果将这个函数应用到限IP访问的网页中,别人即使通过限IP访问段中的代理服务器,也不能访问该页面。
下面提供一个函数:<?php
// 定义一个函数getIP()
function getIP(){global $ip;
if (getenv("HTTP_CLIENT_IP"))
$ip = getenv("HTTP_CLIENT_IP");
else if(getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if(getenv("REMOTE_ADDR"))
$ip = getenv("REMOTE_ADDR");else$ip = "Unknow";
return $ip;}
// 使用方法:
echo getIP();?>
getenv("REMOTE_ADDR")用来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 getenv("HTTP_X_FORWARDED_FOR") 来读取。
但是如果客户端没有通过代理服务器来访问,那么用getenv("HTTP_X_FORWARDED_FOR") 取到的值将是空的。
else if(getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
表示如果getenv("HTTP_X_FORWARDED_FOR") 取到的值存在不为空(即客户端使用代理服务器的情况下),则变量$ip等于getenv("HTTP_X_FORWARDED_FOR") 取到的真实IP值。
如果上面的else if(getenv("HTTP_X_FORWARDED_FOR"))取得的值为空(即没有使用代理服务器),则不会执行下面的$ip = getenv("HTTP_X_FORWARDED_FOR");这一行语句。
这种情况下已经确认客户端没有使用代理服务器,从而通过
else if(getenv("REMOTE_ADDR"))
这两行语句获得客户端的IP地址也是真实的IP地址。
6. http服务器怎样获取客户端ip
客户端
ip
地址是通过
cgi
变量
remote_addr
得到的,这个是
http
服务器负责提供。
http
服务器和客户端浏览器之间存在
socket
连接,socket
连接信息包含了另一侧的
ip
地址和端口。
当然,最终用户如果是通过代理服务器访问怎么办呢?目前主流的
http
代理服务器都支持在
http
报头添加
x-forwarded-for
信息,这可以是一个列表,如果所有的代理
7. 服务器如何获取客户端的IP地址,并与客户端建立TCP连接
客户端的IP自动获取,关键要看客户端的IP是由谁来分配的,如果都是有ISP提供的那么服务器利用IP去连接客户端就不太可能。可以尝试用下面两种思路解决:
1、能否让客户机主动连接服务器。
2、使用动态DNS。让每个客户机都申请一个动态域名,无论它的IP怎样变,当改变以后都会到DNS服务器进行注册,然后服务器使用主机的名字访问客户端。
8. 如何获得客户端的ip地址
如果你测试访问的时候,使用的是 localhost 进行访问的,那么服务器端获得的也就是127.0.0.1,因为localhost是一个环路地址,特殊的.
如果你是通过你的ip地址进行访问的,那么获得的IP地址就会是正确的了.
-------
要通过自己本地的IP进行访问,在控制面板的网络连接里找到本地连接,查看它的属性,并找到"详细信息"按钮,点击后弹出的对话框中IPV4地址就是本地地址.
或打开命令行,输入 ipconfig /all 即可找到本地地址.
在浏览器中通过这个IP地址访问,就不会是127.0.0.1了.
9. java服务端如何获得客户端的ip
serversocket()不提供这个方法,但是server端获取到的请求new serversocket()().accept()()返回的是一个socket()对象,也就是当前连接的信息,这里面包含有一个 getRemoteAddress方法。多看看API