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
risposta
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.
Vedere commenti a post originale. Tutta l'interfaccia "java.net" supporta i protocolli Berkley socket ed è implementata all'interno della JVM. –
"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
@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. –
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
è il socket di supporto java? – Nikhil
TCP/IP e UDP non sono socket raw. – h22