powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Получить содержимое TCP table
4 сообщений из 4, страница 1 из 1
Получить содержимое TCP table
    #33714239
Фотография Alexey Kovyazin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

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

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

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

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

With best regards,
Alexey Kovyazin
...
Рейтинг: 0 / 0
Получить содержимое TCP table
    #33715005
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
Получить содержимое TCP table
    #33715909
Фотография Alexey Kovyazin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за информацию.


With best regards,
Alexey Kovyazin
...
Рейтинг: 0 / 0
Получить содержимое TCP table
    #33715982
Фотография Alexey Kovyazin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
однако, накопал на просторах инета для коммерческой библиотеки от А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
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Получить содержимое TCP table
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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