java 怎么获取客户端的ip

java 怎么获取客户端的ip,第1张

public String getIpAddr(> }

不过获取本机的ip地址 会变成 000001

//获取ip地址

public String getLocalIpAddress()

{

try {

String ipv4;

ArrayList<NetworkInterface> nilist = Collectionslist(NetworkInterfacegetNetworkInterfaces());

for (NetworkInterface ni: nilist)

{

ArrayList<InetAddress> ialist = Collectionslist(nigetInetAddresses());

for (InetAddress address: ialist)

{

if (!addressisLoopbackAddress() && InetAddressUtilsisIPv4Address(ipv4=addressgetHostAddress()))

{

return ipv4;

}

}

}

} catch (SocketException ex)

{

//Loge(LOG_TAG, extoString());

}

return null;

}

import javanetInetAddress;

import javanetUnknownHostException;

public class Test

{

public static void main(String[] args) throws UnknownHostException

{

InetAddress inet = InetAddressgetLocalHost();

Systemoutprintln("本机的ip=" + inetgetHostAddress());

}

}

1得到局域网网段,可由自己机器的IP来确定 (也可以手动获取主机IP-CMD-ipconfig /all)

2根据IP类型,一次遍历局域网内IP地址

JAVA类,编译之后直接运行便可以得到局域网内所有IP,具体怎样使用你自己编写相应代码调用便可

代码如下::

package bean;

import javaio;

import javautil;

public class Ip{

static public HashMap ping; //ping 后的结果集

public HashMap getPing(){ //用来得到ping后的结果集

return ping;

}

//当前线程的数量, 防止过多线程摧毁电脑

static int threadCount = 0;

public Ip() {

ping = new HashMap();

}

public void Ping(String ip) throws Exception{

//最多30个线程

while(threadCount>30)

Threadsleep(50);

threadCount +=1;

PingIp p = new PingIp(ip);

pstart();

}

public void PingAll() throws Exception{

//首先得到本机的IP,得到网段

InetAddress host = InetAddressgetLocalHost();

String hostAddress = hostgetHostAddress();

int k=0;

k=hostAddresslastIndexOf("");

String ss = hostAddresssubstring(0,k+1);

for(int i=1;i <=255;i++){ //对所有局域网Ip

String iip=ss+i;

Ping(iip);

}

//等着所有Ping结束

while(threadCount>0)

Threadsleep(50);

}

public static void main(String[] args) throws Exception{

Ip ip= new Ip();

ipPingAll();

javautilSet entries = pingentrySet();

Iterator iter=entriesiterator();

String k;

while(iterhasNext()){

MapEntry entry=(MapEntry)iternext();

String key=(String)entrygetKey();

String value=(String)entrygetValue();

if(valueequals("true"))

Systemoutprintln(key+"-->"+value);

}

}

class PingIp extends Thread{

public String ip; // IP

public PingIp(String ip){

thisip=ip;

}

public void run(){

try{

Process p= RuntimegetRuntime()exec ("ping "+ip+ " -w 300 -n 1");

InputStreamReader ir = new InputStreamReader(pgetInputStream());

LineNumberReader input = new LineNumberReader (ir);

//读取结果行

for (int i=1 ; i <7; i++)

inputreadLine();

String line= inputreadLine();

if (linelength() <17 || linesubstring(8,17)equals("timed out"))

pingput(ip,"false");

else

pingput(ip,"true");

//线程结束

threadCount -= 1;

}catch (IOException e){}

}

}

}

网络通信可分为两种模式:TCP有连接的通信

UDP无连接的通信

依照上述的问题我可以理解为你是要进行有连接的通信。是要经过三次握手才能实现可靠的连接

第一次:建立连接时三次握手,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN(Synchronize Sequence Numbers)同步序列号。

服务器端即可使用:

Socket s=serverSocketaccept();

String clientIP=sgetInetAddress()toString();

这就实现了java服务器端获取到连接此服务器的客户端的IP了,你若想实现获取所有连接此服务器的客户端的IP,你可以把每次accept()返回的socket放进全局的Vector里面,然后在遍历这个vector方法就同上代码咯……

为适应不同的网络情况,提供这个类:看下面的代码吧,Copy过去就能用。

import javaxservlet>

以上就是关于java 怎么获取客户端的ip全部的内容,包括:java 怎么获取客户端的ip、求java获取手机ip或者平板ip的代码、怎样用JAVA程序获取本机ip 等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9681108.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存