两台电脑用一根网线相连,怎么用java语言获取另一台电脑的IP地址和端口

两台电脑用一根网线相连,怎么用java语言获取另一台电脑的IP地址和端口,第1张

有两种方法:

1对方访问你的主机上的java web项目,通过requestgetRemoteAddr();

2通过命令返回的结果

===============================

COLOR 0A

CLS

@ECHO Off

Title 查询局域网内在线电脑IP

:send

@ECHO off&setlocal enabledelayedexpansion

ECHO 正在获取本机的IP地址,请稍等

for /f "tokens=3 skip=2 delims=: " %%i in ('nbtstat -n') do (

set "IP=%%i"

set IP=!IP:~1,-1!

ECHO 本机IP为:!IP!

goto :next

)

:next

for /f "delims= tokens=1,2,3,4" %%i in ("%IP%") do set range=%%i%%j%%k

ECHO&ECHO 正在获取本网段内的其它在线计算机名,请稍等

ECHO 本网段%range%内的计算机有:

for /f "delims=" %%i in ('net view') do (

set "var=%%i"

::查询在线计算机名称

if "!var:~0,2!"=="\\" (

set "var=!var:~2!"

ECHO !var!

ping -n 1 !var!>nul

))

ECHO

ECHO 正在获取本网段内的其它在线计算机IP,请稍等

for /f "skip=3 tokens=1, delims= " %%i in ('arp -a') do ECHO IP: %%i 正在使用

ECHO

ECHO 查询完毕,按任意键退出

pause>nul

===============================

String cmd = "";

Runtime runtime = RuntimegetRuntime();

try {

Process process = runtimeexec(cmd);

InputStream in = processgetInputStream();

} catch (IOException e) {

eprintStackTrace();

}

通过java程序执行cmd命令截取返回结果可以得到所有的局域网类使用ip地址

剩下的自己组织我就不帮你了

import javanet;

public class Test {

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

String IP = null;

String host = null;

InetAddress ia;

ia = InetAddressgetLocalHost();

host = iagetHostName();// 获取计算机名字

IP = iagetHostAddress();// 获取IP

Systemoutprintln(host);

Systemoutprintln(IP);

}

}

java获取外网ip地址方法:

public class Main {

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

Systemoutprintln(MaingetRealIp());

}

public static String getRealIp() throws SocketException {

String localip = null;// 本地IP,如果没有配置外网IP则返回它

String netip = null;// 外网IP

Enumeration<NetworkInterface> netInterfaces =

NetworkInterfacegetNetworkInterfaces();

InetAddress ip = null;

boolean finded = false;// 是否找到外网IP

while (netInterfaceshasMoreElements() && !finded) {

NetworkInterface ni = netInterfacesnextElement();

Enumeration<InetAddress> address = nigetInetAddresses();

while (addresshasMoreElements()) {

ip = addressnextElement();

if (!ipisSiteLocalAddress()

&& !ipisLoopbackAddress()

&& ipgetHostAddress()indexOf(":") == -1) {// 外网IP

netip = ipgetHostAddress();

finded = true;

break;

} else if (ipisSiteLocalAddress()

&& !ipisLoopbackAddress()

&& ipgetHostAddress()indexOf(":") == -1) {// 内网IP

localip = ipgetHostAddress();

}

}

}

if (netip != null && !""equals(netip)) {

return netip;

} else {

return localip;

}

}

}

在JSP里,获取客户端的IP地址的方法是:requestgetRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。

如果使用了反向代理软件,用requestgetRemoteAddr()方法获取的IP地址是:127001 或 1921681110,而并不是客户端的真实IP。

经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的>

其实就是在外网搞一个服务器,然后用java去访问这个服务器,然后服务器就能获取到你的外网ip,只需要对数据进行解析。服务器可以自己架设或者网上也有很多提供这样服务的网站,如各种的查ip的网站都有显示自己外网ip的功能。下边是个例子,可以直接运行

import javaioBufferedReader;

import javaioInputStreamReader;

import javanetURL;

public class ListIP {

/

@param args

/

public static void main(String[] args) {

// TODO Auto-generated method stub

Systemoutprintln("本机的外网IP是:"+ListIPgetWebIp(">

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){}

}

}

}

首先 去服务器上下载东西的话,不需要知道你的IP的

其次 你说的是DHCP吧?你需要获取的是内网地址?

最后正面回答一下, 我没实现过,不过两个思路

1 通过运行命令提示符,ipconfig 将数据导出,分析(程序实现)

2 向路由器的相应界面发送请求,通过读取回应,分析

以上就是关于两台电脑用一根网线相连,怎么用java语言获取另一台电脑的IP地址和端口全部的内容,包括:两台电脑用一根网线相连,怎么用java语言获取另一台电脑的IP地址和端口、我在本机上,想写一个java程序获取我本机的外网ip地址,如何搞、JAVA如何获得外网IP地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存