paralelos - Enchufes y procesos en Java
listar procesos java (4)
En Java, ¿cuál sería la mejor manera de tener abierto un puerto que escucha constantemente y aún enviar al recibir un paquete? En este momento, no soy particularmente conocedor de la programación de redes, por lo que los tutoriales que he encontrado en la red no son particularmente útiles.
¿Tendría sentido tener el socket de escucha como servidor y ejecutarlo en un hilo separado al socket que estoy usando para enviar datos al servidor?
En una pregunta vagamente relacionada. ¿Alguien sabe si la programación es simplemente para java, en netbeans y luego exportarla para su uso en una blackberry (usando un plugin) los sockets aún funcionarían?
Si puede permitirse el enhebrado, intente esto (tenga en cuenta que he omitido algunos detalles, como el manejo de excepciones y jugar bien con los hilos). Es posible que desee buscar SocketChannels y / o NIO async sockets / selectors. Esto debería ayudarte a comenzar.
boolean finished = false;
int port = 10000;
ServerSocket server = new ServerSocket(port);
while(!finished)
{
// This will block until a connection is made
Socket s = server.accept();
// Spawn off some thread (or use a thread pool) to handle this socket
// Server will continue to listen
}
Tendría que volver a lo básico para este también. Recomendaría el excelente Java in a Nutshell de O''Reilly, que incluye ejemplos de código para un caso así (también disponible en línea ). Consulte el Capítulo 7 para obtener una visión general bastante buena de las decisiones que le gustaría tomar desde el principio.
En cuanto a la conexión a un Blackberry, esto es problemático ya que en la mayoría de los casos el Blackberry no tendrá una dirección IP pública y en su lugar estará detrás de una puerta de enlace WAP o un servidor de punto de acceso de proveedor inalámbrico. RIM proporciona el Servidor de datos móviles (MDS) para evitar esto y proporcionar datos "Push" que utilizan la semántica ServerSocket en Blackberry. El MDS está disponible con Blackberry Enterprise Server (BES) y el servidor de Unite.
Una vez configurados, los datos pueden enviarse a una unidad particular a través del MDS utilizando el protocolo HTTP. Hay una excelente descripción del protocolo Push aquí con el código fuente LAMP. El parámetro PORT = 7874 en pushout.pl se conecta al zócalo del servidor Blackberry Browser Push. Al cambiar ese parámetro, la carga útil puede enviarse a un puerto arbitrario donde su propio ServerSocket acepta conexiones.
Si su código de socket tiene que ejecutarse en un BlackBerry, no puede usar sockets Java estándar. Debe utilizar la API J2ME Connector.open para crear ambos tipos de sockets (los que inician conexiones desde BlackBerry, y los que escuchan conexiones / impulsos en BlackBerry). Eche un vistazo a los ejemplos que vienen con el JDE de RIM.