[Gelöst] Java IRC-Bot

Thor77

kein Gott
Hi,
ich bin momentan dabei in Java einen IRC-Bot zu programmieren.
Nun habe ich ein kleines Problem: Er schafft es nicht sich auf den Server (irc.quakenet.org) zu verbinden.
Es kommt immer:
NOTICE AUTH :*** Looking up your hostname
NOTICE AUTH :*** Checking Ident
NOTICE AUTH :*** No ident response
Ich habe in einem Java-Forum gelesen, dass es irgendwas mit dem Ping zu tuen hat und man "zurück-pingen" muss.
Da in diesem Forum der Fragestellende aber das direkt in ein Interface eingebunden hat habe ich den Code leider nicht so richtig verstanden :(

Der Code sieht bei mir wie folgt aus:
Code:
package [name entfernt];

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;

public class SocketTest {

	
	
	public static void main(String[] args) {
		
		try {
			Socket verbindung = new Socket("irc.quakenet.org", 6667);
			BufferedReader in = new BufferedReader(new InputStreamReader(verbindung.getInputStream()));
			BufferedWriter out = new BufferedWriter(new OutputStreamWriter(verbindung.getOutputStream()));
				while (! in.equals(null)) {
					System.out.println(in.readLine());
				}
		} catch (IOException e) {
			System.out.println("Verbindung nicht möglich!");
		}
		
		
	}

}
 
Hi,
erstmal danke für die Antwort!
Ich habe den kompletten Code in eine Java-Class gezogen den Namen im Quellcode geändert, die Server-Adresse zu "irc.quakenet.org" geändert und einen Test-Channel angegeben. Wenn ich nun das Programm ausführe passiert gar nichts. In der Konsole wird nichts ausgegeben. Daraufhin habe ich an der Stelle wo der Bot sich verbunden hat eingetragen, das er dort "Connected!" ausgeben soll, aber dies tritt nie ein. Hast du eine Idee wodran das liegen kann?

Edit: Nutze zum Programmieren Eclipse
 
Hey,
also eigentlich musst du nur den Code aus der Beispiel Main in deine Main-Funktion übernehmen.
Aber um zu sehen was passiert, kannst du ja einfach einen Breakpoint am Anfang setzen und den Ablauf dann in Einzelschritte mitverfolgen. So siehst du ja wann was passiert.
 
Hey,
habe jetzt einfach mal alles genauso rüberkopiert und nicht den Server geändert musste nur den Nutzernamen ändern da der vorgegeben schon in Benutzung war.
Jetzt funktioniert es...

Nochmal danke für die Antwort und Lösung meines "Problems".
 
Ich hoffe mal das ist ok das ich das hier rein schreibe obwohl mein eigentliches Problem gelöst ist...

Im Moment kann der Bot ja nichts außer sich auf den Server zu verbinden und einen Raum zu betreten. Ich dachte mir ich versuche mal, das er wenn man "hi" schreibt "hallo" zurückgibt. Dies habe ich nun einfach mal in die While-Schleife eingebunden, die einem durchgängig die Nachrichten ausgibt und mit dem Server "Ping Pong spielt". Aber irgendwie mache ich was falsch :unsure:
Hier mal die komplette Schleife so wie ich sie abgeändert habe:
Code:
while ((line = reader.readLine( )) != null) {
            if (line.toLowerCase( ).startsWith("PING ")) {
                // We must respond to PINGs to avoid being disconnected.
                writer.write("PONG " + line.substring(5) + "\r\n");
                writer.write("PRIVMSG " + channel + " :I got pinged!\r\n");
                writer.flush( );
            }else{
                // Print the raw line received by the bot.
                System.out.println(line);
               [B] //Änderung Anfang
                if((reader.readLine()).equals("hi")){
            		writer.write("Hallo!");
            	}
                //Änderung Ende[/B]
            }
        } }
 
Du liest in deiner if-Abfrage eine neue Zeile ein. Das Zeileneinlesen übernimmt aber ja die while-Schleife für dich. Arbeite also mit der Variable "line", die in der while-Schleife immer neu gefüllt wird.
Denk auch dran, dass so wie du es jetzt hast nur ein kleines "hi" erkannt wird. Abhilfe dafür findest du in der ersten if-Abfrage ;)
 
Hi,
das mit der if-Abfrage habe ich jetzt gelöst.
Diese tritt auch in Kraft aber das mit dem Senden funktioniert noch nicht so ganz...
Deshalb habe ich die "Sende-Zeile" in folgendes geändert:
Code:
writer.write("PRIVMSG " + channel + " :Hallo");

Aber es hat sich nichts geändert, er sendet immer noch nichts.
 
Oben