2013-02-14 9 views
8

Sono piuttosto nuovo alla programmazione dei socket Java. Avevo già capito che Java si occupa solo di Internet Domain Sockets e supporterà i protocolli UDP e TCP e Raw IP. Voglio sapere che è il supporto Java di Raw Sockets senza l'utilizzo di applicazioni di terze parti? Se è possibile qualcuno può aiutarmi con un piccolo esempio? Qualsiasi piccolo consiglio sarà molto utile!Presa raw in java

+1

se si desidera il codice sorgente su come java implementa socket, quindi dare un'occhiata al codice sorgente http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/ java/net/Socket.java – AurA

+0

è il socket di supporto java? – Nikhil

+4

TCP/IP e UDP non sono socket raw. – h22

risposta

4

L'unico supporto realmente disponibile per raw sockets nella libreria standard Java sembra essere il InetAddress.isReachable() che potrebbe eseguire ping ICMP se consentito. Questo non è molto e probabilmente nemmeno un socket raw, solo un altro protocollo.

Per altri tipi di comunicazione non elaborata, è consigliabile utilizzare Berkley sockets under Linux (diritti di root necessari) tramite un wrapper basato su JNI.

+0

Vedere commenti a post originale. Tutta l'interfaccia "java.net" supporta i protocolli Berkley socket ed è implementata all'interno della JVM. –

+2

"Socket raw" per comprendere qualcosa che sia in grado di scrivere pacchetti di rete completamente personalizzati, supportando cose come richieste ICMP arbitrarie (non solo ping). – h22

+3

@JamesAnderson - il tuo commento non ha alcun senso. 1) Berkeley socket è un'API non un protocollo. 2) Mentre la JVM può (o non può) utilizzare le API C/C++ internamente, NON sono direttamente disponibili al codice Java. –