Monitorar pacotes TCP

Pessoal, preciso monitorar todos pacotes que saem do computador onde o programa está instalado para um determindado IP que o usuário vai escolher. No caso quero coletar informações do que os usuários estão enviando para as impressoras.

Alguém me mostra o caminho das pedras, na API, olhei a java.net, mas não me veio ideia de como fazer isso. Um exemplo pode ajudar.

Obrigado.

Sua aplicação precisa fazer isso?

Se não precisa: http://www.wireshark.org/

Se precisa. Sua aplicação pode ser um túnel?

Se sim, basta usar a própria API de sockets do Java. Abra um serversocket para receber a conexão da máquina, e faça forward dos dados recebidos para outra máquina. Aí gere quaisquer logs que quiser antes do forward.

Se não pode: http://sourceforge.net/projects/jnetpcap/

Se você nem sequer precisa saber as informações dos pacotes, talvez um servidor proxy possa gerar esse tipo de monitoramento e fazer logs de acesso para você.

jNetPcap mesmo. Obrigado. =)

Esse tipo de coisas (contabilizar impressões dos clientes) não se costuma fazer assim, até porque o cliente pode desligar o seu programa (ha ha ha). O método correto é ver, no seu servidor de impressão, qual é o suporte que ele dá para contabilizar as tais impressões e emitir relatórios.

O problema é que não tem servidor. A gente abre portas TCP/IP para adicionar as impressoras.

Também to achando que não vai dá mto certo. Vamos ver…

Como assim, você se conecta diretamente à impressora, sem usar uma fila de impressão em algum servidor? Muito estranho.

Mesmo uma impressora local tem uma fila de impressão, e normalmente aquelas impressoras que podem ficar em rede são associadas a servidores que controlam suas filas de impressão.

Opa, tem fila de impressão sim.

É essa opção no XP:

Quando você faz isso, a fila da impressão está na própria máquina do usuário (fila local), portanto você precisa de um programa VBScript que possa examinar essa fila local e fazer a contabilização. Procure seu Microsoft Certifier Solution Engineer de confiança, ou dê uma perguntadinha em algum fórum da Microsoft.

:?

Muito frustrante isso, cara. Mas valeu pela dica.

Ou seja, não é possível acessar o spool de impressão com java?

Cara, não é possível seria bem deterministico,

mas estou tentando fazer isso a um bom tempo e nada.

Eu tenho um script qual coloca, estação por estação onde há uma standart TCP\IP port configurada, tudo que é impresso em um txt, csv ou como você preferirir.

Tem uns caras da ND-Digital que acessam os arquivos do spool com .net, deletam, renomeiam e pausam, mas eles não abrem nada, é o segredo do negócio.