2010-05-09 11 views
-1

Je crée un chat en Java. J'ai une méthode (onMouseRelease) à l'intérieur d'un objet qui crée un serveur tcp et attend une prise comme celle-ci:TCP socket communication

ServerSocket server = new ServerSocket(port); 
Socket channel = server.accept(); 

Maintenant, je veux faire un fil qui passe en boucle et lire les données de la prise, de sorte que une fois que l'utilisateur de l'autre côté m'envoie une chaîne, je vais extraire les données de la socket (ou est-ce que c'est un paquet? Désolé, je suis nouveau à ce) et mettre à jour une boîte de texte pour ajouter la chaîne supplémentaire du socket (ou le paquet?).

Je ne sais pas comment lire (extrait) les informations de la prise (/paquet), puis le mettre à jour dans un JTextArea qui est appelé userOutput. Et comment envoyer une chaîne à l'autre client, afin qu'il puisse également lire les nouvelles données et mettre à jour son JTextArea. D'après ce que je sais, pour une communication TCP bilatérale, un ordinateur doit héberger un serveur et l'autre se connecter (en tant que client) et une fois la connexion établie, le client peut également recevoir de nouvelles informations du socket. Est-ce vrai? et s'il vous plaît dites-moi comment.

Toute aide est appréciée! Je sais que c'est un peu long mais j'ai beaucoup cherché et je ne l'ai pas compris (J'ai vu quelque chose comme PrintWriter mais je n'ai pas compris).

+2

Regardez ce http://java.sun.com/docs/books/tutorial/networking/sockets/clientServer.html –

Répondre

2

Vous devriez faire quelque chose comme ceci;

InputStream in = new BufferedInputStream(channel.getInputStream()); 

Vous pouvez ensuite lire les caractères du socket en utilisant une boucle;

char ch; 

while (!finished) { 

    ch = in.read(); //read from socket 
    if(ch = -1) { 
     //nothing left to read 
     finished = true; 
    } 
    else { 
     //do something with ch 
    } 
} 

Je peux continuer si vous le souhaitez? Supposons que nous ayons sauvegardé les caractères entrants dans une chaîne appelée , entrée, pour mettre à jour la zone de texte à appeler;

textArea.setText(input); 

Et pour renvoyer du texte au client, vous utiliseriez une méthode similaire à la réception, en utilisant un flux de sortie;

OutputStream out = new BufferedOutputStream(clientSock.getOutputStream()); 
out.write(output); 
+0

Si vous avez besoin de plus de détails laissez-moi savoir, comme je vous vois posé à nouveau la question . Sinon, veuillez marquer ma réponse comme correcte. Merci. – Jivings