Also ich arbeite an einem Telnet server genauer an einem eigenen kleinen MUD, einfach so aus spaß.
Jezt hab ich einen Server zusammen gebastelt der erst mal nur ein telnet server ist. der kann bis zu 200 clienten gleichzeitig annehmen. nun gibt es bei mir eine function die die Kommandos parst .
Alles läuft er sammelt alle zeichen bis ein (char)13 kommt dann führt er diese OnCommand-funktion aus. weiterhin ignoriert er alle (char)10 und bearbeitet noch (char)8 (backspace).
nun alles schön und gut ich hab letztendlich den string "quit" eingegeben und nun prueft er cmd == "quit" was aber false ergibt. ich habe alles überprüft. sogar die laenge des strings die oncommand bekommt um etwaige versteckte zeichen zu finden. aber nichts ist.
Hier mal der Code der für den Empfang verantwortlich ist.
in der server klasse:
in der user klasse:
Als Output bekomm ich nur
Und im telnet die antowort "Unknown Command"
Jezt hab ich einen Server zusammen gebastelt der erst mal nur ein telnet server ist. der kann bis zu 200 clienten gleichzeitig annehmen. nun gibt es bei mir eine function die die Kommandos parst .
Alles läuft er sammelt alle zeichen bis ein (char)13 kommt dann führt er diese OnCommand-funktion aus. weiterhin ignoriert er alle (char)10 und bearbeitet noch (char)8 (backspace).
nun alles schön und gut ich hab letztendlich den string "quit" eingegeben und nun prueft er cmd == "quit" was aber false ergibt. ich habe alles überprüft. sogar die laenge des strings die oncommand bekommt um etwaige versteckte zeichen zu finden. aber nichts ist.
Hier mal der Code der für den Empfang verantwortlich ist.
in der server klasse:
Code:
void Log(String str) {
Date now = new Date();
System.out.println(DateFormat.getDateTimeInstance().format(now)+" Log:"+str);
}
void RecieveUserInput() {
String c;
for(User u: users) {
while(u.HasRecvData()) {
c = u.RecvChar();
int cint = (int)c.charAt(0);
if(cint == 13) {
this.OnCommand(u,u.input);
u.input = "";
Log("OnPressEnter");
} else if(cint == 10) {
//Ignore
} else if(cint == 8) {
u.input = u.input.substring(0,u.input.length()-2);
} else {
u.input += c;
Log("OnDataRecieve ( "+c+" )");
}
}
}
}
void OnCommand(User u, String cmd) {
Log("OnCommand ( "+cmd+" , "+String.valueOf(cmd.length())+" )");
if(cmd == "quit") {
u.Send("ByeBye!");
u.Disconnect();
} else if(cmd == "hi") {
u.Send("Hi");
} else {
u.Send("Unknown Command");
}
}
in der user klasse:
Code:
String RecvChar() {
try {
return String.valueOf((char)in.read());
} catch(IOException io) {
return "";
}
}
Als Output bekomm ich nur
OnDataRecieve ( q )
OnDataRecieve ( u )
OnDataRecieve ( i )
OnDataRecieve ( t )
OnPressEnter
OnCommand ( quit , 4 )
Und im telnet die antowort "Unknown Command"