2013-02-14 17 views
8

Tôi khá mới với lập trình socket java. Tôi đã đi thorugh rằng java chỉ đề với Internet Domain Sockets và nó sẽ hỗ trợ UDP và TCP và Raw IP Protocols. Tôi muốn biết đó là hỗ trợ java Raw Sockets mà không sử dụng bất kỳ ứng dụng của bên thứ ba nào? Nếu nó có thể bất cứ ai có thể giúp tôi với một ví dụ nhỏ? Bất kỳ lời khuyên nhỏ sẽ rất tuyệt vời!Ổ cắm thô trong java

+1

nếu bạn muốn mã nguồn về cách java triển khai socket, hãy xem mã nguồn http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/ java/net/Socket.java – AurA

+0

là ổ cắm hỗ trợ java? – Nikhil

+4

TCP/IP và UDP không phải là ổ cắm thô. – h22

Trả lời

4

Hỗ trợ thực sự chỉ có sẵn cho raw sockets trong thư viện chuẩn Java có vẻ là InetAddress.isReachable() có thể thực hiện ping ICMP nếu được phép. Điều này thực sự không nhiều và có lẽ thậm chí không thực sự là một socket thô, chỉ là một giao thức nữa.

Đối với các loại giao tiếp thô khác, tôi khuyên bạn nên sử dụng Berkley sockets under Linux (quyền root bắt buộc) thông qua một số trình bao bọc dựa trên JNI.

+0

Xem nhận xét bài gốc. Tất cả giao diện "java.net" đều hỗ trợ giao thức socket của Berkley và được cài đặt bên trong JVM. –

+2

"Ổ cắm thô" để hiểu điều gì đó có khả năng viết các gói mạng tùy chỉnh hoàn toàn, hỗ trợ những thứ như yêu cầu ICMP tùy ý (không chỉ ping). – h22

+3

@JamesAnderson - nhận xét của bạn không có ý nghĩa gì cả. 1) Ổ cắm Berkeley là một API không phải là một giao thức. 2) Trong khi JVM có thể (hoặc có thể không) sử dụng các API C/C++ đó bên trong, chúng KHÔNG trực tiếp có sẵn cho mã Java. –