L'écriture d'un client telnet en java - comment écouter les nouvelles données?
Je suis d'essayer de mettre en œuvre un client Telnet en Java, ce qui sera tout simplement obtenir des données à partir d'un serveur telnet.
J'ai regardé pour les âges et ont trouvé beaucoup de choses, mais pas particulièrement ce dont j'ai besoin - par exemple apache commons client exemple, qui semble envoyer un grand nombre de commandes, qui est juste déroutant moi, pour être honnête.
Alors j'ai donc pensé qu'il serait plus juste d'écrire mon propre client qui se connecte au serveur en utilisant un socket.
public class TelnetClient {
private String host;
public TelnetClient(String host) {
this.host = host;
}
public void getData(){
Socket s = new Socket();
PrintWriter s_out = null;
BufferedReader s_in = null;
try {
s.connect(new InetSocketAddress("www.google.com" , 80));
System.out.println("Connected");
//writer for socket
s_out = new PrintWriter( s.getOutputStream(), true);
//reader for socket
s_in = new BufferedReader(new InputStreamReader(s.getInputStream()));
}
//Host not found
catch (UnknownHostException e) {
System.err.println("Don't know about host : " + host);
System.exit(1);
} catch (IOException e) {
e.printStackTrace();
}
//Send message to server
String message = "GET /HTTP/1.1\r\n\r\n";
s_out.println( message );
System.out.println("Message send");
//Get response from server
String response;
try {
while ((response = s_in.readLine()) != null) {
System.out.println( response );
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Mais je ne peux pas vraiment tester ce avec le serveur actuellement, donc je suis juste à l'aide de google.com cependant je veux le changer pour écouter en permanence de nouvelles lignes de données sur le serveur.
Fondamentalement, ma question est: vais-je à propos de cette façon le mal - suis-je naïf par juste en utilisant des sockets pour accéder au serveur telnet et suis-je sous-estimer ce qu'est un client telnet/serveur, merci pour toute aide.
Aussi si quelqu'un a tout bon/exemples simples d'un client telnet, qui serait très utile!!
- S'il vous plaît corriger la mise en forme de votre code, il est impossible de les lire.
- J'ai corrigé pour vous. Vous devriez être en cohérence avec la façon dont vous utilisez votre accolades. Et que "écrire une ligne, tiret de l'open accolade, tiret, le corps, unindent de l'accolade, unindent la ligne suivante" a l'air vraiment étrange.
- Ok assurez-vous grâce. Avez-vous des commentaires au sujet de la question?
- Jetez un oeil à ceci: stackoverflow.com/questions/1195809/...
- Bon, ça ressemble à cela pourrait être semi-utile, tout ce que je veux faire est d'ouvrir une connexion avec un serveur telnet et écouter les nouvelles données, le client a besoin d'être sophistiquée?
Vous devez vous connecter pour publier un commentaire.
J'ai été tenue hors sur le répondeur, car il ya un couple de différentes choses qui se passent ici-Google ne dispose pas d'un serveur telnet en cours d'exécution sur le port 80, c'est un site web (HTTP) serveur. Vous vous connectez à un serveur web avec votre client telnet et essayer de parler sur HTTP avec texte en clair. HTTP et telnet sont deux protocoles différents.
Il y a donc un décalage entre ce que vous voulez faire et ce que ces Java clients telnet sont conçus pour faire, à savoir se connecter à un shell distant.
Basé sur ce que vous avez dit, je pense que vous pouvez le faire beaucoup plus facilement juste en faisant une requête HTTP. Il y a un mort de solution simple à cette réponse:
Sockets sont des choses compliquées. Jetez un oeil à ce tutoriel si vous voulez creuser plus profond pour eux. Mais ils vont être un énorme douleur à travailler avec et probablement pas vous aider à obtenir ce que vous devez faire.