2013-02-14 122 views
8

我對Java套接字編程很新穎。我已經考慮過java只處理Internet域套接字,它將支持UDP和TCP以及原始IP協議。我想知道java是否支持Raw Sockets而不使用任何第三方應用程序?如果有可能的話,任何人都可以用一個小例子來幫助我?任何小小的建議都會非常棒!java中的原始套接字

+1

如果你想要Java源代碼實現套接字,然後看一看源代碼http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/ java/net/Socket.java – AurA 2013-02-14 11:05:40

+0

是java支持行插座嗎? – Nikhil 2013-02-14 11:11:41

+4

TCP/IP和UDP不是原始套接字。 – h22 2013-02-14 11:14:18

回答

4

Java標準庫中對raw sockets唯一真正可用的支持似乎是InetAddress.isReachable(),如果允許,它可以執行ICMP ping操作。這實際上並不多,甚至可能不是真正的原始套接字,只是一個協議。

對於其他類型的原始通信,我建議使用Berkley sockets under Linux(需要root權限)通過一些基於JNI的包裝。

+0

查看評論原來的帖子。所有「java.net」接口都支持Berkley套接字協議,並且在JVM中實現。 – 2013-02-14 11:19:26

+2

「原始套接字」理解能夠編寫完全自定義網絡數據包的東西,支持諸如任意(不僅僅是ping)ICMP請求之類的東西。 – h22 2013-02-14 11:25:43

+3

@詹姆斯安德森 - 你的評論沒有任何意義。 1)伯克利套接字是一種API,不是協議。 2)雖然JVM可能(或可能不)在內部使用這些C/C++ API,但它們不能直接用於Java代碼。 – 2013-02-14 11:35:54