Trong thử nghiệm tích hợp (JDK 6) Tôi đang cố gắng nắm bắt tất cả các kết nối TCP gửi đi và giả sử chúng. Có vẻ như tôi nên sử dụng phương thức java.net.Socket#setSocketImplFactory()
. Hoạt động tốt tại thời điểm này, nhưng tôi không thể hiểu làm thế nào tôi có thể có được một quyền truy cập vào nhà máy ban đầu, để nhanh chóng ban đầu JDK cung cấp SocketImpl
lớp. Tôi cần điều này chủ yếu là vì tôi muốn để một số kết nối tự do đi ra ngoài mà không bị chế nhạo. Bạn có thể đề xuất một số sách hướng dẫn/hướng dẫn/hướng dẫn về vấn đề này không?Làm thế nào để giả lập một kết nối Socket đi?
Trả lời
Theo javadoc, bạn sẽ có thể sử dụng SocketFactory#getDefault() để lấy SocketFactory mặc định cho môi trường của mình.
BTW: Bạn cũng có thể muốn nhìn vào RFE này/lỗi mà tuyên bố rằng SocketImplFactory cơ bản là một ngõ cụt: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4245730
Bạn nói đúng, nhưng tôi đang nói về 'SocketImplFactory', tạo ra các cá thể của lớp' SocketImpl'. Lớp 'java.net.Socket' không liên quan gì đến tất cả điều này. – yegor256
Nhìn vào mã nguồn của lớp Socket, chưa có nhà máy ban đầu - các các nhà thầu kiểm tra xem liệu factory
có phải là không và nếu có, họ chỉ cần gán impl
làm PlainSocketImpl()
mới.
Theo như tôi hiểu không có điều gì như "mã nguồn của lớp Socket". Mỗi JDK có nguồn riêng của nó, có thể khác với việc triển khai thực hiện. – yegor256
Có lẽ đó là ngây thơ của tôi nhưng tôi cho rằng bạn đang sử dụng Oracle JDK 6, trong trường hợp có các nguồn cụ thể để xem xét - tôi đã làm điều này và sử dụng nó để giải thích rằng không có nhà máy gốc để có được(). Nếu bạn có thể làm điều đó, tôi đồng ý với @Peter Lawrey rằng việc sử dụng một dịch vụ là phương pháp tốt nhất. Tôi đã phải làm tương tự với Runtime.getRuntime(). http://stackoverflow.com/questions/2257901 – Rich
Đó là thư viện của bên thứ ba bên trong ứng dụng của tôi, đó là sử dụng Ổ cắm. Tôi không thể thay đổi nó dù sao đi nữa. – yegor256
Thay vì chế nhạo một Ổ cắm, tôi sẽ tạo ra một dịch vụ Socket cho Socket để nói chuyện. Điều này có thể nắm bắt tất cả các dữ liệu được viết và trả lời theo bất kỳ cách nào bạn muốn. Nó có thể chạy trong cùng một thử nghiệm và có thể trong cùng một luồng.
- 1. Làm thế nào để mô phỏng mất kết nối socket?
- 2. Lập trình socket Android mà không cần kết nối WIFi
- 3. Làm thế nào để tôi kết nối lại một cách hiệu quả boost :: socket sau khi ngắt kết nối?
- 4. Làm thế nào để bạn giả lập một số IE2umerIEnumerable?
- 5. Làm thế nào để xem/thay đổi thời gian chờ kết nối socket trên Linux?
- 6. Làm thế nào để thiết lập kết nối TCP Socket từ trình duyệt web (phía máy khách)?
- 7. làm thế nào để lập trình socket ssl
- 8. Thời gian chờ kết nối socket Python
- 9. cách tạo kết nối Socket trong Android?
- 10. Làm thế nào để giả lập lớp DirectoryInfo?
- 11. Trình giả lập BlackBerry không kết nối với internet
- 12. Kết nối thiết bị USB với Trình giả lập Android?
- 13. Làm cách nào để giả lập một trường riêng tư?
- 14. Làm thế nào để giả lập một lớp cơ sở với thư viện giả python
- 15. Làm thế nào để tránh trình giả lập giả lập Android getSystemService (Context.SENSOR_SERVICE)?
- 16. VS2012 không thể kết nối với WP8 giả lập
- 17. Làm thế nào để kết nối một QSlider để QDoubleSpinBox
- 18. Làm thế nào để biết khi nào một Ổ cắm đã bị ngắt kết nối
- 19. Làm thế nào để giả lập Microsoft.Office.Interop.Excel.Range với Moq?
- 20. Làm thế nào để biến trình giả lập Android?
- 21. Làm thế nào để giả lập các hàm lồng nhau?
- 22. Làm thế nào để hiểu java Socket-Quyền?
- 23. Làm thế nào để giả lập một cuộc gọi REST phức tạp từ phía máy chủ?
- 24. Làm thế nào để kiểm tra Kết nối/Express middleware?
- 25. làm thế nào để mô phỏng trường hợp bất thường cho lập trình socket/tcp trong linux, chẳng hạn như chấm dứt một bên của kết nối?
- 26. Bất kỳ sự khác biệt nào giữa kết nối socket và kết nối tcp?
- 27. Làm cách nào để có một socket chỉ chấp nhận các kết nối từ localhost (trong Java)?
- 28. Làm thế nào để tắt/bật mạng, chuyển sang Wifi trong trình giả lập Android?
- 29. Lỗi 'ECONNREFUSED' khi kết nối socket được thiết lập trên máy chủ khác nhau
- 30. C, lập trình socket: Kết nối nhiều máy khách với máy chủ bằng cách chọn()
Câu hỏi này có liên quan: http://stackoverflow.com/questions/2083647/writing-a-java-net-socketimplfactory – yegor256
Cũng liên quan: http://stackoverflow.com/questions/2257901/mock-runtime-getruntime – Rich