怎么确定两台主机间是否互连

时间:2022-03-26 14:28:53
我想如果有两台网络设备他们IP分别是192.168.1.1和192.168.1.58   如何用java确定这两台设备之间是否互连了呢?用什么方法   (注:如果这两台设备之间有通过其他设备连接,可以忽略这两台设备之间的那些其他设备,我只要知道这两台设备是否互连)  急!!

76 个解决方案

#1


ping之

#2


怎么ping  ?  我是要知道两台设备之间是否互连  不是我自己的机子是否可以ping到别人的机子    

#3


那你自己的机子能和那两台机子都能连吧,要不然怎么测

#4


这点小问题都搞不定??

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class ManagerArgs{
public static void main(String[] args) {    
try {  
Process p = Runtime.getRuntime().exec("ping 192.168.1.86"); 
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));  
String line = "";  
while ((line = br.readLine()) != null) {  
  System.out.println(line);
                  System.out.println("I call 有数据耶!");
  
}  
 br.close();  
 } catch (IOException e) {  
    e.printStackTrace();  
 }  
    } 
}

#5


楼上是牛人呀,呵呵

#6


4楼牛人啊!!

#7


windows--》开始--》运行
输入ping 192.168.1.86
结果如果是request time out.  说明没通
如果有延时 说明通了

#8


引用 2 楼 woshixdl 的回复:
怎么ping  ?  我是要知道两台设备之间是否互连  不是我自己的机子是否可以ping到别人的机子    

是的   我是要做个网络拓扑图     具体是这样的  用户输入一个IP地址范围  我根据这个范围找出其中的活动的网络设备(开着的设备)   然后判断这些网络设备之间的关系  然后把这些活动的设备画一个拓扑图出来  我就是不知道怎么判断这些网络设备之间那些设备之间是互连的    还请高手赐教

#9


刚引用错了

引用 3 楼 cclovescw 的回复:
那你自己的机子能和那两台机子都能连吧,要不然怎么测


是的  我是要做个网络拓扑图    具体是这样的  用户输入一个IP地址范围  我根据这个范围找出其中的活动的网络设备(开着的设备)  
然后判断这些网络设备之间的关系  然后把这些活动的设备画一个拓扑图出来  我就是不知道怎么判断这些网络设备之间那些设备之间是互连的    
还请高手赐教

#10


是我问题说的不清楚吗?  怎么没人帮我。。。

#11


引用 9 楼 woshixdl 的回复:
刚引用错了 

引用 3 楼 cclovescw 的回复:

那你自己的机子能和那两台机子都能连吧,要不然怎么测 


是的  我是要做个网络拓扑图    具体是这样的  用户输入一个IP地址范围  我根据这个范围找出其中的活动的网络设备(开着的设备)  
然后判断这些网络设备之间的关系  然后把这些活动的设备画一个拓扑图出来  我就是不知道怎么判断这些网络设备之间那些设备之间是互连的    
还请高手赐教

你比我还没事找抽型----这个要是星型布局就好办了,将容器步入中心,照我代码改改就O了,要是别的拓扑就不好整了!!

你先吧snmp研究透了在来求助吧!!网康就是这些功能,一年服务费10万,谁没事帮你呀,这么大工程。

#12


引用 11 楼 APOLLO_TS 的回复:
引用 9 楼 woshixdl 的回复:
刚引用错了 

引用 3 楼 cclovescw 的回复: 

那你自己的机子能和那两台机子都能连吧,要不然怎么测 


是的  我是要做个网络拓扑图    具体是这样的  用户输入一个IP地址范围  我根据这个范围找出其中的活动的网络设备(开着的设备)  
然后判断这些网络设备之间的关系  然后把这些活动的设备画一个拓扑图出来  我就是不知道怎么判断这些网络设备之间那些设备之间是互连的    
还请高手赐…

晕   我不是来求助整个工程的  我只是问怎么判断哪些设备之间是有通路的 ? 用什么方法  其他的我自己搞定啊

#13


补充另个问题  怎么用java获取路由表信息?  有没有什么方法?

#14


引用 3 楼 cclovescw 的回复:
那你自己的机子能和那两台机子都能连吧,要不然怎么测


就算 ping 不通 ,也会有信息出来,
这代码也叫牛?

#15


引用 4 楼 APOLLO_TS 的回复:
这点小问题都搞不定??

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class ManagerArgs{
public static void main(String[] args) {
try {
Process p = Runtime.getRuntime().exec("ping 192.168.1.86");
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = br.readLine()) !=…


就算 ping 不通 ,也会有信息出来,
这代码也叫牛?

#16


引用 13 楼 woshixdl 的回复:
补充另个问题  怎么用java获取路由表信息?  有没有什么方法?


snmp
有个jar包!!研究吧!!

#17


telnet 某个端口就行了,ping是不行的,很多服务器,以及路由器都是不给用ping命令了。

#18


你就是想画出拓补图吗?你这种设计思路不太好

#19


如果只是想通过JAVA 程序来判断两台机器是否连通的话,可以用下面的测试程序,写的不太好,但可以达到你的目的。

Frame_Server.java
import java.net.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class Frame_Server extends Frame
{
static TextArea t_1=new TextArea();
public static void main(String args[])
{
// System.out.println(server.in);
Frame_Server fs=new Frame_Server("Frame_Server");
fs.setSize(400,300);
WindowClosing WC=new WindowClosing();
fs.addWindowListener(WC);
fs.panel();
fs.setVisible(true);
server.servers();
//

}
public Frame_Server(String str)
{
super(str);
}
public void panel()
{
Panel p_1=new Panel();
Label l_1=new Label("对方信息:");
p_1.add("North",l_1);
p_1.setBackground(Color.pink);
add("North",p_1);
t_1.setEditable(false);
add("Center",t_1);
}
}

class WindowClosing extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(1);
}
}



class server extends Thread
{
OutputStream os=null;
InputStream is=null;
static byte[] buf=new byte[100];
static String in="haha";
static int len=0;
private Socket s;
public server(Socket s)
{
this.s=s;
}
public void run()
{
try
{
os=s.getOutputStream();
is=s.getInputStream();
os.write("消息发送成功".getBytes());
len=is.read(buf);
System.out.println(new String(buf,0,len));
in="hehe";
Frame_Server.t_1.append(new String(server.in));
Frame_Server.t_1.append(new String(buf,0,len));
is.close();
os.close();
s.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void servers()
{
try
{
ServerSocket ss=new ServerSocket(6000);
while(true)
{
Socket s=ss.accept();
char[] buf=new char[100];
new server(s).start();
System.out.println("IP is:"+s.getInetAddress()+s.getPort());
String s_3=new String(buf,0,30);
System.out.println(s_3);
String s_s="hello you !";
Frame_Server.t_1.append(s_3);//new String(s_3));
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}



Frame_Client.java
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
public class Frame_Client extends Frame
{
static TextField t_1=new TextField(10);
static TextArea t_2=new TextArea();
public static void main(String args[])
{
socket_1.clients("Chat now!");
Frame_Client f=new Frame_Client("Frame_Client");
f.setSize(400,200);
f.setLocation(400,0);
f.setBackground(Color.pink);
f.dispose();
f.addMenu();
FA fa=new FA();
f.addWindowListener(fa);
f.setVisible(true);
}
public Frame_Client(String str)
{
super(str);
}
public void addMenu()
{
MenuBar mb=new MenuBar();
Menu file=new Menu("fiel");
MenuItem st=new MenuItem("start");
st.addActionListener(new MenuEvent());
file.add(st);
mb.add(file);
setMenuBar(mb);
}

public void dispose()
{
Panel p_1=new Panel();
Label l_1=new Label("请输入信息:");
p_1.add(l_1);
t_1.setEditable(true);
p_1.add(t_1);
add("North",p_1);
t_2.setEditable(false);
add("Center",t_2);
}

}
class FA extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(1);
}
}

class  MenuEvent implements ActionListener
{
public  void actionPerformed(ActionEvent e)
{
String str_1=Frame_Client.t_1.getText();
socket_1 s_1=new socket_1();
new socket_1().clients(str_1);
Frame_Client.t_2.append(new String(s_1.buf,0,s_1.len));

}
}

class socket_1
{
static OutputStream os=null;
static InputStream is=null;
static byte[] buf=new byte[100];
static int len=0;
public static void clients(String str)
{
try
{
Socket s=new Socket(InetAddress.getByName("192.168.1.1"),6000);
os=s.getOutputStream();
is=s.getInputStream();
len=is.read(buf);
System.out.println(new String(buf,0,len));
os.write(str.getBytes());
os.close();
is.close();
s.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}


先让①Frame_Server.java在ip是192.168.1.1的机器A上运行,②Frame_Client.java在ip是192.168.1.58的机器B上运行,然后在第二台机器上弹出的窗口中写点字,选"file->start",如果在A机器上的窗口上出现了你输入的字,就说明B连通A了。
然后,把Frame_Client.java里的Socket s=new Socket(InetAddress.getByName("192.168.1.1"),6000);改成Socket s=new Socket(InetAddress.getByName("192.168.1.58"),6000);类似上面的做法,验证A连通B就可以了。
代码不太好,是大学时写的测试程序,有很多多余的地方,但你也能凑活用吧。
不知道你画TOP图跟用Java写连通有什么关系。。。。。

#20


我知道拓扑发现算法不是这样的    但是我这确实是想偷工    可是也有人说我这样是没法实现的   别的两台设备之间的联系我是不可能知道的

#21


只要有个能和你联通,就能

#22


网络设备与网络终端应是两个概念,你通过IP只能得到IP终端关系表,得不到拓扑图的
ip与掩码的与\异或运算得到广播与网络地址,再减加1得到主机IP范围
以宿主主机为圆心,ARP请求所有IP范围MAC,得到宿主与在线IP的辐射图,并解析HOSTS NAME




你要自动拓扑,就需要路由发现、网络管理的支持

#23


可以用scanport小工具检测两台电脑互通。

#24


TCP

#25


如果只是想通过JAVA 程序来判断两台机器是否连通的话,可以用下面的测试程序,写的不太好,但可以达到你的目的。 

Frame_Server.java 
Java code
import java.net.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class Frame_Server extends Frame
{
    static TextArea t_1=new TextArea();
    public static void main(String args[])
    {
    //    System.out.println(server.in);
        Frame_Server fs=new Frame_Server("Frame_Server");
        fs.setSize(400,300);
        WindowClosing WC=new WindowClosing();
        fs.addWindowListener(WC);
        fs.panel();
        fs.setVisible(true);
        server.servers();
        //

    }
    public Frame_Server(String str)
    {
        super(str);
    }
    public void panel()
    {
        Panel p_1=new Panel();
        Label l_1=new Label("对方信息:");
        p_1.add("North",l_1);
        p_1.setBackground(Color.pink);
        add("North",p_1);
        t_1.setEditable(false);
        add("Center",t_1);
    }
}

class WindowClosing extends WindowAdapter
{
    public void windowClosing(WindowEvent e)
    {
        System.exit(1);
    }
}



class server extends Thread
{
    OutputStream os=null;
    InputStream is=null;
    static byte[] buf=new byte[100];
    static String in="haha";
    static int len=0;
    private Socket s;
    public server(Socket s)
    {
        this.s=s;
    }
    public void run()
    {
        try
        {
            os=s.getOutputStream();
            is=s.getInputStream();
            os.write("消息发送成功".getBytes());
            len=is.read(buf);
            System.out.println(new String(buf,0,len));
            in="hehe";
            Frame_Server.t_1.append(new String(server.in));
            Frame_Server.t_1.append(new String(buf,0,len));
            is.close();
            os.close();
            s.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
    public static void servers()
    {
        try
        {
            ServerSocket ss=new ServerSocket(6000);
            while(true)
            {
                Socket s=ss.accept();
                char[] buf=new char[100];
                new server(s).start();
                System.out.println("IP is:"+s.getInetAddress()+s.getPort());
                String s_3=new String(buf,0,30);
                System.out.println(s_3);
                String s_s="hello you !";
                Frame_Server.t_1.append(s_3);//new String(s_3));
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}




Frame_Client.java 
Java code
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
public class Frame_Client extends Frame
{
    static TextField t_1=new TextField(10);
    static TextArea t_2=new TextArea();
    public static void main(String args[])
    {
        socket_1.clients("Chat now!");
        Frame_Client f=new Frame_Client("Frame_Client");
        f.setSize(400,200);
        f.setLocation(400,0);
        f.setBackground(Color.pink);
        f.dispose();
        f.addMenu();
        FA fa=new FA();
        f.addWindowListener(fa);
        f.setVisible(true);
    }
    public Frame_Client(String str)
    {
        super(str);
    }
    public void addMenu()
    {
        MenuBar mb=new MenuBar();
        Menu file=new Menu("fiel");
        MenuItem st=new MenuItem("start");
        st.addActionListener(new MenuEvent());
        file.add(st);
        mb.add(file);
        setMenuBar(mb);
    }
    
    public void dispose()
    {
        Panel p_1=new Panel();
        Label l_1=new Label("请输入信息:");
        p_1.add(l_1);
        t_1.setEditable(true);
        p_1.add(t_1);
        add("North",p_1);
        t_2.setEditable(false);
        add("Center",t_2);
    }
    
}
class FA extends WindowAdapter
{
    public void windowClosing(WindowEvent e)
    {
        System.exit(1);
    }
}

class  MenuEvent implements ActionListener
{
    public  void actionPerformed(ActionEvent e)
    {
        String str_1=Frame_Client.t_1.getText();
        socket_1 s_1=new socket_1();
        new socket_1().clients(str_1);
        Frame_Client.t_2.append(new String(s_1.buf,0,s_1.len));
        
    }
}

class socket_1
{
    static OutputStream os=null;
    static InputStream is=null;
    static byte[] buf=new byte[100];
    static int len=0;
    public static void clients(String str)
    {
        try
        {
            Socket s=new Socket(InetAddress.getByName("192.168.1.1"),6000);
            os=s.getOutputStream();
            is=s.getInputStream();
            len=is.read(buf);
            System.out.println(new String(buf,0,len));
            os.write(str.getBytes());
            os.close();
            is.close();
            s.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

#26


up

#27


牛人真多

#28


up

#29


UPUPUPUPUPUPUP

#30


强悍

#31


用ping 就可以啊

#32


来围观下。。好多牛人

#33


强,路过学习!

#34


321312312

#35


路过的~顶个~

#36


搞笑地牛人~~
这个方法适用C++吗?
引用 4 楼 APOLLO_TS 的回复:
这点小问题都搞不定?? 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 


public class ManagerArgs{ 
public static void main(String[] args) {    
try {  
Process p = Runtime.getRuntime().exec("ping 192.168.1.86"); 
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));  
String line = "";  
while ((line = b…

#37


顶了  学习关注

#38


牛人真多

#39


up

#40


mark

#41


引用 4 楼 APOLLO_TS 的回复:
这点小问题都搞不定?? 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 


public class ManagerArgs{ 
public static void main(String[] args) {    
try {  
Process p = Runtime.getRuntime().exec("ping 192.168.1.86"); 
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));  
String line = "";  
while ((line = b…


厉害

#42


学习...

#43


up

#44


lz的意思是大概是你的机器和另外两个机器,你要确定另外两个机器是否互联,用你的机器远程连接上一个机器,ping另外一个机器就可以了,可以用远程桌面连接或者ssh都可以,操作系统不一样,东西也不一样,如果不能远程连接的话,你只能写个代码试试了,就像4楼那样。

#45


瞻仰下。。。。

#46


丿

#47


该回复于2009-07-07 13:20:32被版主删除

#48


应该知道和哪台机器相联,否则怎么测试

#49


比较稳妥的办法是在每台要监控的机器上部署你自己的agent,否则很难做到的,总会有一些情况恶心到你的

#50


和哪台机器联啊?

#1


ping之

#2


怎么ping  ?  我是要知道两台设备之间是否互连  不是我自己的机子是否可以ping到别人的机子    

#3


那你自己的机子能和那两台机子都能连吧,要不然怎么测

#4


这点小问题都搞不定??

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class ManagerArgs{
public static void main(String[] args) {    
try {  
Process p = Runtime.getRuntime().exec("ping 192.168.1.86"); 
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));  
String line = "";  
while ((line = br.readLine()) != null) {  
  System.out.println(line);
                  System.out.println("I call 有数据耶!");
  
}  
 br.close();  
 } catch (IOException e) {  
    e.printStackTrace();  
 }  
    } 
}

#5


楼上是牛人呀,呵呵

#6


4楼牛人啊!!

#7


windows--》开始--》运行
输入ping 192.168.1.86
结果如果是request time out.  说明没通
如果有延时 说明通了

#8


引用 2 楼 woshixdl 的回复:
怎么ping  ?  我是要知道两台设备之间是否互连  不是我自己的机子是否可以ping到别人的机子    

是的   我是要做个网络拓扑图     具体是这样的  用户输入一个IP地址范围  我根据这个范围找出其中的活动的网络设备(开着的设备)   然后判断这些网络设备之间的关系  然后把这些活动的设备画一个拓扑图出来  我就是不知道怎么判断这些网络设备之间那些设备之间是互连的    还请高手赐教

#9


刚引用错了

引用 3 楼 cclovescw 的回复:
那你自己的机子能和那两台机子都能连吧,要不然怎么测


是的  我是要做个网络拓扑图    具体是这样的  用户输入一个IP地址范围  我根据这个范围找出其中的活动的网络设备(开着的设备)  
然后判断这些网络设备之间的关系  然后把这些活动的设备画一个拓扑图出来  我就是不知道怎么判断这些网络设备之间那些设备之间是互连的    
还请高手赐教

#10


是我问题说的不清楚吗?  怎么没人帮我。。。

#11


引用 9 楼 woshixdl 的回复:
刚引用错了 

引用 3 楼 cclovescw 的回复:

那你自己的机子能和那两台机子都能连吧,要不然怎么测 


是的  我是要做个网络拓扑图    具体是这样的  用户输入一个IP地址范围  我根据这个范围找出其中的活动的网络设备(开着的设备)  
然后判断这些网络设备之间的关系  然后把这些活动的设备画一个拓扑图出来  我就是不知道怎么判断这些网络设备之间那些设备之间是互连的    
还请高手赐教

你比我还没事找抽型----这个要是星型布局就好办了,将容器步入中心,照我代码改改就O了,要是别的拓扑就不好整了!!

你先吧snmp研究透了在来求助吧!!网康就是这些功能,一年服务费10万,谁没事帮你呀,这么大工程。

#12


引用 11 楼 APOLLO_TS 的回复:
引用 9 楼 woshixdl 的回复:
刚引用错了 

引用 3 楼 cclovescw 的回复: 

那你自己的机子能和那两台机子都能连吧,要不然怎么测 


是的  我是要做个网络拓扑图    具体是这样的  用户输入一个IP地址范围  我根据这个范围找出其中的活动的网络设备(开着的设备)  
然后判断这些网络设备之间的关系  然后把这些活动的设备画一个拓扑图出来  我就是不知道怎么判断这些网络设备之间那些设备之间是互连的    
还请高手赐…

晕   我不是来求助整个工程的  我只是问怎么判断哪些设备之间是有通路的 ? 用什么方法  其他的我自己搞定啊

#13


补充另个问题  怎么用java获取路由表信息?  有没有什么方法?

#14


引用 3 楼 cclovescw 的回复:
那你自己的机子能和那两台机子都能连吧,要不然怎么测


就算 ping 不通 ,也会有信息出来,
这代码也叫牛?

#15


引用 4 楼 APOLLO_TS 的回复:
这点小问题都搞不定??

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class ManagerArgs{
public static void main(String[] args) {
try {
Process p = Runtime.getRuntime().exec("ping 192.168.1.86");
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = br.readLine()) !=…


就算 ping 不通 ,也会有信息出来,
这代码也叫牛?

#16


引用 13 楼 woshixdl 的回复:
补充另个问题  怎么用java获取路由表信息?  有没有什么方法?


snmp
有个jar包!!研究吧!!

#17


telnet 某个端口就行了,ping是不行的,很多服务器,以及路由器都是不给用ping命令了。

#18


你就是想画出拓补图吗?你这种设计思路不太好

#19


如果只是想通过JAVA 程序来判断两台机器是否连通的话,可以用下面的测试程序,写的不太好,但可以达到你的目的。

Frame_Server.java
import java.net.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class Frame_Server extends Frame
{
static TextArea t_1=new TextArea();
public static void main(String args[])
{
// System.out.println(server.in);
Frame_Server fs=new Frame_Server("Frame_Server");
fs.setSize(400,300);
WindowClosing WC=new WindowClosing();
fs.addWindowListener(WC);
fs.panel();
fs.setVisible(true);
server.servers();
//

}
public Frame_Server(String str)
{
super(str);
}
public void panel()
{
Panel p_1=new Panel();
Label l_1=new Label("对方信息:");
p_1.add("North",l_1);
p_1.setBackground(Color.pink);
add("North",p_1);
t_1.setEditable(false);
add("Center",t_1);
}
}

class WindowClosing extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(1);
}
}



class server extends Thread
{
OutputStream os=null;
InputStream is=null;
static byte[] buf=new byte[100];
static String in="haha";
static int len=0;
private Socket s;
public server(Socket s)
{
this.s=s;
}
public void run()
{
try
{
os=s.getOutputStream();
is=s.getInputStream();
os.write("消息发送成功".getBytes());
len=is.read(buf);
System.out.println(new String(buf,0,len));
in="hehe";
Frame_Server.t_1.append(new String(server.in));
Frame_Server.t_1.append(new String(buf,0,len));
is.close();
os.close();
s.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void servers()
{
try
{
ServerSocket ss=new ServerSocket(6000);
while(true)
{
Socket s=ss.accept();
char[] buf=new char[100];
new server(s).start();
System.out.println("IP is:"+s.getInetAddress()+s.getPort());
String s_3=new String(buf,0,30);
System.out.println(s_3);
String s_s="hello you !";
Frame_Server.t_1.append(s_3);//new String(s_3));
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}



Frame_Client.java
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
public class Frame_Client extends Frame
{
static TextField t_1=new TextField(10);
static TextArea t_2=new TextArea();
public static void main(String args[])
{
socket_1.clients("Chat now!");
Frame_Client f=new Frame_Client("Frame_Client");
f.setSize(400,200);
f.setLocation(400,0);
f.setBackground(Color.pink);
f.dispose();
f.addMenu();
FA fa=new FA();
f.addWindowListener(fa);
f.setVisible(true);
}
public Frame_Client(String str)
{
super(str);
}
public void addMenu()
{
MenuBar mb=new MenuBar();
Menu file=new Menu("fiel");
MenuItem st=new MenuItem("start");
st.addActionListener(new MenuEvent());
file.add(st);
mb.add(file);
setMenuBar(mb);
}

public void dispose()
{
Panel p_1=new Panel();
Label l_1=new Label("请输入信息:");
p_1.add(l_1);
t_1.setEditable(true);
p_1.add(t_1);
add("North",p_1);
t_2.setEditable(false);
add("Center",t_2);
}

}
class FA extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(1);
}
}

class  MenuEvent implements ActionListener
{
public  void actionPerformed(ActionEvent e)
{
String str_1=Frame_Client.t_1.getText();
socket_1 s_1=new socket_1();
new socket_1().clients(str_1);
Frame_Client.t_2.append(new String(s_1.buf,0,s_1.len));

}
}

class socket_1
{
static OutputStream os=null;
static InputStream is=null;
static byte[] buf=new byte[100];
static int len=0;
public static void clients(String str)
{
try
{
Socket s=new Socket(InetAddress.getByName("192.168.1.1"),6000);
os=s.getOutputStream();
is=s.getInputStream();
len=is.read(buf);
System.out.println(new String(buf,0,len));
os.write(str.getBytes());
os.close();
is.close();
s.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}


先让①Frame_Server.java在ip是192.168.1.1的机器A上运行,②Frame_Client.java在ip是192.168.1.58的机器B上运行,然后在第二台机器上弹出的窗口中写点字,选"file->start",如果在A机器上的窗口上出现了你输入的字,就说明B连通A了。
然后,把Frame_Client.java里的Socket s=new Socket(InetAddress.getByName("192.168.1.1"),6000);改成Socket s=new Socket(InetAddress.getByName("192.168.1.58"),6000);类似上面的做法,验证A连通B就可以了。
代码不太好,是大学时写的测试程序,有很多多余的地方,但你也能凑活用吧。
不知道你画TOP图跟用Java写连通有什么关系。。。。。

#20


我知道拓扑发现算法不是这样的    但是我这确实是想偷工    可是也有人说我这样是没法实现的   别的两台设备之间的联系我是不可能知道的

#21


只要有个能和你联通,就能

#22


网络设备与网络终端应是两个概念,你通过IP只能得到IP终端关系表,得不到拓扑图的
ip与掩码的与\异或运算得到广播与网络地址,再减加1得到主机IP范围
以宿主主机为圆心,ARP请求所有IP范围MAC,得到宿主与在线IP的辐射图,并解析HOSTS NAME




你要自动拓扑,就需要路由发现、网络管理的支持

#23


可以用scanport小工具检测两台电脑互通。

#24


TCP

#25


如果只是想通过JAVA 程序来判断两台机器是否连通的话,可以用下面的测试程序,写的不太好,但可以达到你的目的。 

Frame_Server.java 
Java code
import java.net.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class Frame_Server extends Frame
{
    static TextArea t_1=new TextArea();
    public static void main(String args[])
    {
    //    System.out.println(server.in);
        Frame_Server fs=new Frame_Server("Frame_Server");
        fs.setSize(400,300);
        WindowClosing WC=new WindowClosing();
        fs.addWindowListener(WC);
        fs.panel();
        fs.setVisible(true);
        server.servers();
        //

    }
    public Frame_Server(String str)
    {
        super(str);
    }
    public void panel()
    {
        Panel p_1=new Panel();
        Label l_1=new Label("对方信息:");
        p_1.add("North",l_1);
        p_1.setBackground(Color.pink);
        add("North",p_1);
        t_1.setEditable(false);
        add("Center",t_1);
    }
}

class WindowClosing extends WindowAdapter
{
    public void windowClosing(WindowEvent e)
    {
        System.exit(1);
    }
}



class server extends Thread
{
    OutputStream os=null;
    InputStream is=null;
    static byte[] buf=new byte[100];
    static String in="haha";
    static int len=0;
    private Socket s;
    public server(Socket s)
    {
        this.s=s;
    }
    public void run()
    {
        try
        {
            os=s.getOutputStream();
            is=s.getInputStream();
            os.write("消息发送成功".getBytes());
            len=is.read(buf);
            System.out.println(new String(buf,0,len));
            in="hehe";
            Frame_Server.t_1.append(new String(server.in));
            Frame_Server.t_1.append(new String(buf,0,len));
            is.close();
            os.close();
            s.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
    public static void servers()
    {
        try
        {
            ServerSocket ss=new ServerSocket(6000);
            while(true)
            {
                Socket s=ss.accept();
                char[] buf=new char[100];
                new server(s).start();
                System.out.println("IP is:"+s.getInetAddress()+s.getPort());
                String s_3=new String(buf,0,30);
                System.out.println(s_3);
                String s_s="hello you !";
                Frame_Server.t_1.append(s_3);//new String(s_3));
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}




Frame_Client.java 
Java code
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
public class Frame_Client extends Frame
{
    static TextField t_1=new TextField(10);
    static TextArea t_2=new TextArea();
    public static void main(String args[])
    {
        socket_1.clients("Chat now!");
        Frame_Client f=new Frame_Client("Frame_Client");
        f.setSize(400,200);
        f.setLocation(400,0);
        f.setBackground(Color.pink);
        f.dispose();
        f.addMenu();
        FA fa=new FA();
        f.addWindowListener(fa);
        f.setVisible(true);
    }
    public Frame_Client(String str)
    {
        super(str);
    }
    public void addMenu()
    {
        MenuBar mb=new MenuBar();
        Menu file=new Menu("fiel");
        MenuItem st=new MenuItem("start");
        st.addActionListener(new MenuEvent());
        file.add(st);
        mb.add(file);
        setMenuBar(mb);
    }
    
    public void dispose()
    {
        Panel p_1=new Panel();
        Label l_1=new Label("请输入信息:");
        p_1.add(l_1);
        t_1.setEditable(true);
        p_1.add(t_1);
        add("North",p_1);
        t_2.setEditable(false);
        add("Center",t_2);
    }
    
}
class FA extends WindowAdapter
{
    public void windowClosing(WindowEvent e)
    {
        System.exit(1);
    }
}

class  MenuEvent implements ActionListener
{
    public  void actionPerformed(ActionEvent e)
    {
        String str_1=Frame_Client.t_1.getText();
        socket_1 s_1=new socket_1();
        new socket_1().clients(str_1);
        Frame_Client.t_2.append(new String(s_1.buf,0,s_1.len));
        
    }
}

class socket_1
{
    static OutputStream os=null;
    static InputStream is=null;
    static byte[] buf=new byte[100];
    static int len=0;
    public static void clients(String str)
    {
        try
        {
            Socket s=new Socket(InetAddress.getByName("192.168.1.1"),6000);
            os=s.getOutputStream();
            is=s.getInputStream();
            len=is.read(buf);
            System.out.println(new String(buf,0,len));
            os.write(str.getBytes());
            os.close();
            is.close();
            s.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

#26


up

#27


牛人真多

#28


up

#29


UPUPUPUPUPUPUP

#30


强悍

#31


用ping 就可以啊

#32


来围观下。。好多牛人

#33


强,路过学习!

#34


321312312

#35


路过的~顶个~

#36


搞笑地牛人~~
这个方法适用C++吗?
引用 4 楼 APOLLO_TS 的回复:
这点小问题都搞不定?? 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 


public class ManagerArgs{ 
public static void main(String[] args) {    
try {  
Process p = Runtime.getRuntime().exec("ping 192.168.1.86"); 
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));  
String line = "";  
while ((line = b…

#37


顶了  学习关注

#38


牛人真多

#39


up

#40


mark

#41


引用 4 楼 APOLLO_TS 的回复:
这点小问题都搞不定?? 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 


public class ManagerArgs{ 
public static void main(String[] args) {    
try {  
Process p = Runtime.getRuntime().exec("ping 192.168.1.86"); 
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));  
String line = "";  
while ((line = b…


厉害

#42


学习...

#43


up

#44


lz的意思是大概是你的机器和另外两个机器,你要确定另外两个机器是否互联,用你的机器远程连接上一个机器,ping另外一个机器就可以了,可以用远程桌面连接或者ssh都可以,操作系统不一样,东西也不一样,如果不能远程连接的话,你只能写个代码试试了,就像4楼那样。

#45


瞻仰下。。。。

#46


丿

#47


该回复于2009-07-07 13:20:32被版主删除

#48


应该知道和哪台机器相联,否则怎么测试

#49


比较稳妥的办法是在每台要监控的机器上部署你自己的agent,否则很难做到的,总会有一些情况恶心到你的

#50


和哪台机器联啊?