Làm cách nào để xác định loại mới java.nio.channels.SelectableChannel
(cho cổng nối tiếp)?Làm cách nào để xác định SelectableChannel của riêng tôi?
Trả lời
sự hiểu biết của tôi là thực hiện java được dựa trên chức năng c unix select()
(tôi dường như nhớ rằng việc triển khai Windows là hơi khác nhau)
Tùy thuộc vào hệ điều hành (và args JVM!) Chức năng hệ điều hành có nguồn gốc khác nhau là được gọi, nhưng những gì họ có điểm chung là mã nguồn gốc của nó - chức năng cơ bản không được triển khai trong Java.
Nếu bạn muốn tạo một thư viện truy cập select()
(hoặc tương tự) của hệ điều hành cơ sở (thực sự dựa vào tập tin), tôi nghĩ bạn buộc phải sử dụng JNI. Tôi không tin có bất kỳ cách nào xung quanh nó.
Bộ chọn/SelectableChannel trong Java thực sự là một tập con thiếu máu của những gì select()
có thể thực hiện.
Bạn có thể muốn mở rộng java.nio.channels.spi.AbstractSelectableChannel
để tạo triển khai mà bạn cần. Nếu bạn đang yêu cầu một cái gì đó khác nhau, bạn cần phải đưa ra một câu hỏi chi tiết hơn. Mã nguồn JDK có thể tải xuống theo một vài giấy phép khác nhau, tùy thuộc vào phiên bản bạn đang tải xuống. Bạn có tùy chọn xem triển khai JDK (java.nio.channels.Channel
, java.nio.channels.SocketChannel
, v.v.) để hiểu đầy đủ những gì bạn cần triển khai. Tuy nhiên, nếu bạn làm điều này, hãy cẩn thận không sao chép mã từ nguồn JDK trừ khi bạn có thể tuân theo giấy phép của mã nguồn mà bạn đã tải xuống.
Cuốn sách Java NIO có thể giúp bạn.
Làm cách nào để bạn có thể triển khai AbstractSelectableChannel khi bạn không có SelectorProvider? SelectableChannel.provider() có nghĩa vụ trả lại nhà cung cấp đã tạo kênh nhưng nhà cung cấp mặc định không thể tạo triển khai của bạn. – Gili
Tôi đoán điểm của tôi là ở đâu đó dưới mui xe, ai đó phải gọi một mức chọn thấp() đối với các tệp xử lý. Nó không rõ ràng như thế nào SelectableChannel cung cấp Selector với các thông tin cần thiết để làm công việc của mình. Làm thế nào sau này có thể biết khi SelectableChannel của tôi đã sẵn sàng để đọc, viết, vv? – Gili
- 1. Xác định macro đọc của riêng tôi
- 2. Làm thế nào để xác định cấu trúc LINQ của riêng tôi trong C#?
- 3. Xác định iterator của container của riêng tôi
- 4. Làm thế nào ứng dụng Flash của tôi có thể xác định URL của riêng mình?
- 5. Làm cách nào để xác định toán tử của riêng tôi bằng ngôn ngữ lập trình Io?
- 6. Làm thế nào để xác định một phương pháp riêng
- 7. Làm cách nào để tạo định dạng ToString() tùy chỉnh của riêng tôi?
- 8. Làm cách nào để xác định trình trợ giúp định tuyến riêng trong đường ray 3?
- 9. Làm cách nào để xác định tiến trình của tệp?
- 10. Làm cách nào để xác định góc của thiết bị?
- 11. Tôi làm cách nào để xác định biểu định kiểu mặc định cho trình duyệt?
- 12. Làm cách nào để xác định scrollHeight?
- 13. Làm cách nào để xác định các hằng số trong một tệp riêng biệt trong Perl?
- 14. Làm cách nào để xác định chính xác vị trí của khách truy cập vào trang web của tôi?
- 15. Làm cách nào để xác định C++ redistributables chương trình của tôi cần chạy?
- 16. Làm cách nào để tôi có thể xác định sự kiện được nhấp của nút self.editButtonItem?
- 17. Làm cách nào để xác định tên người dùng cho mã thông báo heroku của tôi?
- 18. Làm cách nào để tạo lớp lỗi thời gian chạy tùy chỉnh của riêng tôi?
- 19. Làm cách nào để truyền ý định Android cho bất kỳ ai trừ ứng dụng của riêng tôi?
- 20. Làm thế nào tôi có thể xác định IP của router/cổng của tôi trong Java?
- 21. Làm cách nào để mở rộng datetime.datetime của Python bằng các phương thức của riêng tôi?
- 22. Làm cách nào để xác định chính xác Freebase
- 23. Làm cách nào để xác định CPU nào chạy trên?
- 24. Làm cách nào để đặt biểu tượng cho tiện ích mở rộng tệp của riêng tôi
- 25. Làm thế nào tôi có thể xác định các cột của riêng mình trong một DataGrid WPF?
- 26. PHP: Làm thế nào để làm của riêng trang 404 không tìm thấy lỗi của tôi
- 27. Làm cách nào để tạo văn bản NLTK của riêng tôi từ một tệp văn bản?
- 28. Làm cách nào để tải lớp Java của riêng tôi trong C trên Android?
- 29. Làm cách nào để tôi có thể triển khai kiểu ngoại lệ của riêng mình?
- 30. Cách chính xác để thêm pragma của riêng tôi vào số perl sw
Nói cách khác, không có cách nào để xác định SelectableChannel của riêng bạn? – Gili
Đánh giá từ mã nguồn đến Selector và SelectableChannel Tôi không thể thấy bất kỳ cách nào xung quanh thực tế là nếu bạn muốn xác định SelectableChannel của riêng bạn, thì những gì bạn cần làm là viết (và đăng ký) một SelectorProvider mới cung cấp các triển khai mới của Selector và SelectableChannel (chúng cần được ghép nối) hỗ trợ chức năng mở rộng mà bạn muốn (sử dụng JNI hoặc một số phương thức khác). – Nuoji
POE đã làm đúng! [POE :: Bộ lọc] (http://search.cpan.org/~rcaputo/POE/lib/POE/Filter.pm). – woky