En las pruebas de integración (JDK 6) estoy intentando capturar todas las conexiones TCP salientes y simularlas. Parece que debería usar el método java.net.Socket#setSocketImplFactory()
. Funciona bien en este momento, pero no puedo entender cómo puedo obtener acceso a la fábrica original, para crear una instancia de la clase original SocketImpl
proporcionada por JDK. Lo necesito principalmente porque quiero dejar que algunas conexiones salgan libremente, sin burlarse. ¿Puede sugerir algunos manuales/directrices/instrucciones sobre este problema?¿Cómo burlarse de una conexión Socket saliente?
Respuesta
De acuerdo con javadoc, debería poder usar SocketFactory#getDefault() para obtener el SocketFactory predeterminado para su entorno.
BTW: También puede ser que desee ver en este RFE/fallo que declara que SocketImplFactory es básicamente un callejón sin salida: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4245730
Tienes razón, pero estoy hablando de 'SocketImplFactory', que genera instancias de la clase' SocketImpl'. La clase 'java.net.Socket' no tiene nada que ver con todo esto. – yegor256
Si examina el código fuente de la clase Socket, no existe un original de fábrica - la los constructores comprueban si factory
es nulo, y si lo es, simplemente asignan impl
para que sea un nuevo PlainSocketImpl()
.
Por lo que yo entiendo, no existe el "código fuente de la clase Socket". Cada JDK tiene sus propias fuentes, que pueden diferir de la implementación a la implementación. – yegor256
Quizás fue ingenuo pero asumí que estaba utilizando Oracle JDK 6, en cuyo caso hay fuentes específicas a las que hay que prestar atención: lo hice y lo usé para explicar que no hay una fábrica original para obtener(). Si puede hacerlo, estoy de acuerdo con @Peter Lawrey en que utilizar un servicio es el mejor método. Tuve que hacer lo mismo con Runtime.getRuntime(). http://stackoverflow.com/questions/2257901 – Rich
Es una biblioteca de terceros dentro de mi aplicación, que usa Sockets. No puedo cambiarlo de todos modos. – yegor256
En lugar de burlarse de un zócalo, crearía un servicio Socket para que el Socket pueda hablar. Esto puede capturar todos los datos escritos y responder de la manera que desee. Se puede ejecutar en la misma prueba y posiblemente en el mismo hilo.
- 1. Burlarse de una conexión TCP/IP con C#
- 2. Interrumpir un socket de conexión
- 3. cómo crear una conexión de socket en Android?
- 4. Cómo destruir por completo una conexión de socket en C
- 5. ¿Cómo puedo probar una conexión saliente a una dirección IP así como a un puerto específico?
- 6. Cómo purgar una cola de MSMQ saliente
- 7. Vuelva a conectar una conexión de socket Java al desconectarse
- 8. Prueba conexión de socket en Python
- 9. HTTP conexión persistente vs conexión de socket TCP
- 10. Programación de socket Android sin conexión WIFi
- 11. La conexión de socket fue abortado - CommunicationException
- 12. utilizando una conexión de socket sin bloqueo en C
- 13. ¿Cómo funciona el tiempo de espera de conexión del socket?
- 14. ¿Cómo encontrar el estado de conexión del socket en C?
- 15. ¿Cómo mantener la conexión de socket VOIP en segundo plano?
- 16. Burlarse de una clase vs. burlarse de su interfaz
- 17. ¿Cómo burlarse de EntityManager?
- 18. Moq burlarse de una clase
- 19. socket, detectar la conexión se pierde
- 20. cómo terminar mi llamada saliente.
- 21. SSL Tiempo de espera de conexión de socket
- 22. Cómo recibe una llamada saliente en el receptor de difusión
- 23. ¿Cómo estrangulas el ancho de banda de una conexión de socket en C?
- 24. java: cómo burlarse de Calendar.getInstance()?
- 25. Cómo burlarse de un aspecto
- 26. C: tiempo de espera de conexión de socket
- 27. ¿Cómo evitar crear una nueva conexión de socket en socket.io después de actualizar la página html?
- 28. ¿Cómo ver la identificación del hilo de un proceso que ha abierto una conexión de socket?
- 29. ¿Cómo se interrumpe un hilo que realiza una conexión de socket de bloqueo?
- 30. ¿Cómo puedo hacer una conexión de socket de cliente a cliente (navegadores)?
Esta pregunta se relaciona: http://stackoverflow.com/questions/2083647/writing-a-java-net-socketimplfactory – yegor256
También relacionado: http://stackoverflow.com/questions/2257901/mock-runtime-getruntime – Rich