objets socket Java sont utilisés pour représenter les connexions entre deux machines. Toutefois, un programme utilisant des sockets peut s'enliser si le programme attend une connexion à établir. Dans ce cas , vous pouvez diviser sur un thread d'exécution séparé qui attend une connexion alors que le programme principal fonctionne toujours . En étendant ce faire, vous pouvez utiliser le thread séparé pour surveiller les prises pour les connexions et les manipuler , seulement avertir le programme quand une connexion est établie ou d'une autre importante se produit même . Principal ServerSocket Exemple Pour écouter un port à travers un socket , de créer un objet " SocketServer " . Serveurs de socket d'écoute pour les connexions sur un port spécifique. Dès réception de l'information de connexion sur ce port , le Socket Server retourne un objet "socket " . Les données reçues via la connexion peuvent être traitées par cet objet socket . Discussions discussions sont des instances de l'exécution de code à l'intérieur d'un programme. Ces fils d'exécution permettent le fonctionnement simultané de code, ce qui signifie que le code peut être écrit pour exécuter en même temps à travers différents threads. Ainsi, par exemple , un programme qui souhaite suivre une sorte d' état de fond ou de connexion peut créer un thread qui fait cela , et appeler le thread principal lorsque quelque chose change ou une connexion se produit . < Br > écoute de ports avec les discussions en mettant en place un autre thread, vous pouvez créer un code qui surveille la prise en arrière-plan alors que le programme principal exécute . Par exemple, vous pouvez implémenter une classe qui étend la classe " Runnable " , et l'exécuter comme un thread séparé pour exécuter en arrière-plan , à l'écoute sur un port : privé SocketListen static class implémente Runnable { public void run () { try { listenSocket = new ServerSocket (9999) ; //écouter sur le port 9999 } catch (IOException e) { System.exit (-1) ; //erreur} Socket clientSocket = null; try { reçu = serverSocket.accept (); objet //connexion en cas de succès } catch (IOException e) { System.exit (-1) ; //erreur }}} Fractionnement de la discussion Si vous avez défini une classe exécutable à utiliser comme un agent écoute /de surveillance, tout ce qui reste est de l'utiliser comme un fil . Le programme principal peut appeler un thread séparé dans le cadre de son exécution qui va exécuter le code de l'écoute de socket. Une fois que les finitions de code, soit en raison de la réussite de connexion ou d'erreur, le fil de surveillance rejoint le thread principal. Le thread principal exécute une boucle d'attente jusqu'à ce que la surveillance fils finitions: fil t = new Thread ( nouveau SocketListen ()); t.start (); while ( t.isAlive () ) { threadMessage (« Toujours en attente ..."); t.join (1000); //attend une seconde avant de répéter en boucle }
|