Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Получить содержимое TCP table / 4 сообщений из 4, страница 1 из 1
07.05.2006, 00:28
    #33714239
Alexey Kovyazin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить содержимое TCP table
Привет!

Не подскажет ли кто, как подойти к проблеме получения содержимого TCP table из под Java?
Т.е. - на компе крутится некая Java-прога, в которой очень хочется увидеть список TCP-соединений, вроде того, что выдает netstat -a

Причем очень желательно, чтобы код работал и под Линукс, и под Вин (пусть с разными jar или какими-то нативными библиотеками).

По неким наметкам догадываюсь, что копать надо в сторону SNMP, но куда и как - не представляю, область далекая (пока :).

Если кто может помощь ссылкой с примером или навести на мысль, объяснить на пальцах, так сказать - буду очень благодарен.

With best regards,
Alexey Kovyazin
...
Рейтинг: 0 / 0
08.05.2006, 11:34
    #33715005
Получить содержимое TCP table
Alexey KovyazinПривет!

Не подскажет ли кто, как подойти к проблеме получения содержимого TCP table из под Java?
Т.е. - на компе крутится некая Java-прога, в которой очень хочется увидеть список TCP-соединений, вроде того, что выдает netstat -a

Причем очень желательно, чтобы код работал и под Линукс, и под Вин (пусть с разными jar или какими-то нативными библиотеками).

По неким наметкам догадываюсь, что копать надо в сторону SNMP, но куда и как - не представляю, область далекая (пока :).

Если кто может помощь ссылкой с примером или навести на мысль, объяснить на пальцах, так сказать - буду очень благодарен.

With best regards,
Alexey Kovyazin
В Java таких возможностей нет и SNMP тут не поможет. Вас спасет вызов netstat с помощью java.lang.Runtime#exec() .
...
Рейтинг: 0 / 0
09.05.2006, 13:28
    #33715909
Alexey Kovyazin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить содержимое TCP table
Спасибо за информацию.


With best regards,
Alexey Kovyazin
...
Рейтинг: 0 / 0
09.05.2006, 15:40
    #33715982
Alexey Kovyazin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить содержимое TCP table
однако, накопал на просторах инета для коммерческой библиотеки от Аdventnet пример, который вроде бы делает то что нужно...
Или все же не то?


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
 import  java.lang.*;
 import  java.util.*;
 import  java.net.*;
 import  com.adventnet.snmp.snmp2.*;
 import  com.adventnet.snmp.snmp2.usm.*;

 // Take care of getting options
String usage = "snmpget [-d] [-v version(v1,v2,v3)] [-c community] [-p port] [-r retries] [-t timeout] [-u user] [-a auth_protocol] [-w auth_password] [-s priv_password] [-n contextName] [-i contextID] host";
String options[] = { "-d", "-c", "-wc", "-p", "-r", "-t", "-m", "-v", "-u", "-a", "-w", "-s", "-n", "-i"};
String values[] = { "None",  null ,  null ,  null ,  null ,  null , "None",  null ,  null ,  null ,  null ,  null ,  null ,  null  };


//Start new SNMP API
SnmpAPI api =  new  SnmpAPI();
api.start();
 if  (values[ 0 ].equals( "Set" )) api.setDebug( true );

//Start new SNMP session
SnmpSession session =  new  SnmpSession(api);

session.setName("localhost");

//Build Get request PDU
SnmpPDU pdu =  new  SnmpPDU();

//Set table column OIDs
SnmpOID[] oids =  new  SnmpOID[ 5 ];
oids[ 0 ] =  new  SnmpOID( ".1.3.6.1.2.1.6.13.1.1" ); //tcpConnState
oids[ 1 ] =  new  SnmpOID( ".1.3.6.1.2.1.6.13.1.2" ); //tcpConnLocalAddress
oids[ 2 ] =  new  SnmpOID( ".1.3.6.1.2.1.6.13.1.3" ); //tcpConnLocalPort
oids[ 3 ] =  new  SnmpOID( ".1.3.6.1.2.1.6.13.1.4" ); //tcpConnRemAddress
oids[ 4 ] =  new  SnmpOID( ".1.3.6.1.2.1.6.13.1.5" ); //tcpConnRemPort

 for  ( int  i =  0 ; i <  5 ; i++) {
pdu.addNull(oids[i]);
}

//Open session
 try  {
session.open();
}  catch  (SnmpException e) {
System.err.println("Error opening session:"+e.getMessage());
System.exit( 1 );
}


SnmpOID rootoid =  new  SnmpOID( ".1.3.6.1.2.1.6.13.1." );
String root = rootoid.toString();
 boolean  comeOut = false;
 int  rowCount =  1 ;
 while  (!comeOut)
{
 try  {
SnmpPDU result = session.syncSend(pdu);
System.out.println("Sending PDU...");
 if  ( result ==  null  )
{
//System.out.println("Request timed out to: " + opt.remArgs[0] );
comeOut = true;
 break ;
}

 int  size = pdu.getVariableBindings().size();
 int  p;
 for  ( p =  0 ; p < size; p++ )
{
 if  (pdu.getObjectID(p).toString().startsWith(root))
{
comeOut = true;
 break ;
}
}

 if  ( p == size )
{
System.out.println("ROW " + (rowCount++));
System.out.println(pdu.printVarBinds() + "\n" );
}
pdu.setCommand(SnmpAPI.GETNEXT_REQ_MSG);
}  catch  (SnmpException e) {
System.err.println("SnmpPDU " + e.getMessage());
System.exit( 1 );
}

}

//close SNMP session
session.close();

//close SNMP API
api.close();


With best regards,
Alexey Kovyazin
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Получить содержимое TCP table / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]