IRC CHAT auslesen -> Sockets/input und output Streams

Status
Nicht offen für weitere Antworten.

Clue

Mitglied
Hallo , habe mich hier neu angemeldet und hoffe auf gute Hilfe und das ich dann mein wissen auch anderen Übermitteln kann.

Also ich möchte mit nem Programm mich ins IRC verbinden (glaube das geht schon bei mir)
und dann aus bestimmten channeln das was gechattet/geschrieben wird in einem textarea oder liste ausgeben lassen.

bzw würde ich die vorher noch auswerten ect, aber da sist nicht das Problem.

Folgende Problempunkte treten auf :::

-Wie gelange ich an ausgaben des IRC
-der getinputStream , ist der richtig eingebaut??

hier mal mein Programm , bin über jegliche hilfen erfreut!!!!

Code:
/* EchoClient.java */
import java.awt.event.*;
import java.awt.*;
import java.net.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import java.awt.image.*;

//Klassenbeginn
public class connectirc extends Frame implements ActionListener
{
  
  Vector hatDaten;

  java.awt.List anzeigeliste;

  //Mainmethode
  public static void main(String[] args)
  {
		new connectirc();
  }

  //Kontruktorbeginn
  public connectirc()
	{
      
		hatDaten = new Vector();

		this.setLayout(null);
		this.setSize(400,200);
		this.setBackground(Color.gray);
		this.setTitle("Fifa Stadium 1.0");

		anzeigeliste = new java.awt.List();
		anzeigeliste.setBounds(200,0,200,200);
		
		this.add(anzeigeliste);

		this.setVisible(true);

		this.addWindowListener(new WindowAdapter() 
			{	public void windowClosing(WindowEvent e)  
					{System.exit(0);}  });

	  
	  
	}
	  
         public void verbindung()
				{
 
				try
					{
						// Verbindung zum IRC
						Socket sock = new Socket("irc.quakenet.eu.org" , 6667);
						InputStream in = sock.getInputStream();
						OutputStream out = sock.getOutputStream();
						sock.setSoTimeout(300);
						BufferedReader conin = new BufferedReader(
                        new InputStreamReader(System.in));
						String line = "";
						while (true) {
						//Eingabezeile lesen
						line = conin.readLine();
						anzeigeliste.add(line);
									 }
					}

				//Exception fängt fehler aus try ab
				catch(Exception se ) 
					{
						//Fehlerausgaben
						System.out.println( "keine Verbindung moeglich: " + se.getMessage() );
						System.exit( 1 );

					}

				}



		public void actionPerformed(ActionEvent e)
			{
				String s=(String)e.getActionCommand();
			}


	
}
 

nekton

Aktives Mitglied
hatte da auch mal an einem irc-client gebastelt. ist zwar schon ein bisschen laenger her, aber immernoch funktionsfaehig ;)
vieleichts hilfts dir ja weiter. ich arbeite gerade an einer neuen version die ein wenig mehr OOP arbeitet. kann ich bei gelegenheit auch mal posten wenn interesse besteht.

ansonsten schau dir halt mal ds irc protokoll nach rfc1459 an (http://rfc.sunsite.dk/rfc/rfc1459.html) - da steht alles drin wie du mit dem server zu reden hast..

achja, der code

Code:
/*
  FUZZEL-BOT 0.03
  ===============
  NAME: IrcStream.java
  USE: this file includes methods which will be needed to run/code an IRC-client.
  MAINCODE: Dennis Wilson <nektonx@gmx.net>
  ADDITIONAL CODE: [NONEYET]
  CHANGES: - better structured source
          - better structured methods
          - new IRC methods ()
	      - a bit better class communication model

  LAST CHANGES: 24.04.2002

  NOTE: Fuzzle-Bot is protected by the GPL. That means feel free to copy, you may modifie this code (and send the
        new modification back to me <nektonx@gmx.net>) and also use it for your projects (it also would be nice if
        I could get a copy of your new work :). If you modifie anythig in this code so, please set comments and
        change the points in headcomments ("ADDITIONAL CODE" & "LAST CHANGES").



   Methods (only important ones):

      Construkter
      ===========
      	public Irc()				         Just create the an Objekt of Irc. By this way you have to initialize
						         the connection by your own.
	public Irc(String sRemoteHost, int iRemotePort)  This create an Objekt and etablishes a connection to the server and
							 port defined in _sRemoteHost_ and _sRemotePort_.

      Connection
      ==========
	public int initConnection(String sRemoteHost, int iRemotePort) open a connetion to remote host on the given port
				  
	public int shutConnection()                   closes the server connection
	public int shutConnection(String sQuitMsg)    closes the server connection and sends a quit message
	public int getStatus()                        returns the actual connection status {0 = offline,
                                                                                          1 = online,
                                                                                          2 = host error,
                                                                                          3 = socket error}
	public boolean isConnected()		      returns true if connection is etablished or false when no 
						      connection is given.


      Basic Communication
      ===================
	public void write(String sMsg)  send a string to the server
	public String read()           get the server messages as a string objekt

      
      Extended Communication
      ======================
	public void logIn(String sNickName)              login with this nickname
	public void pong(String sPingId)                 tell's the server with a PONG message that you are alive
	public void nick(String sNickName)               changes your nickname on irc
	public void joinChan(String sChannel)            join the specified channel
	public void topic(String sChan, String sTitle)   changes channel topic
	public void privmsg(String sNick, String sMsg)   send a message to channel/user
	public void notice(String sNick, String sMsg)    send a notice message to channel/user


*/


import java.io.*;
import java.net.*;

public class IrcStream
{

   public final String BOLD 		= "^B";
   public final String LINED 		= "^_";
   public final String COLOR 		= "";

   private Socket clientSock 		= null;
   private BufferedReader socketIn	= null;
   private PrintWriter socketOut 	= null;
   private int iStatus 			= 0;



/* constructer 	     */

   public IrcStream()
   {
   }

   public IrcStream(String sRemoteHost, int iRemotePort)
   {
	  this.initConnection(sRemoteHost, iRemotePort); 
   }


/* explicit methods */

   private int initConnection(String sRemoteHost, int iRemotePort)
   {
      if(this.isConnected())
      { 
	return 4;
      }
      
      try
      {
        clientSock = new Socket(sRemoteHost, iRemotePort);
        socketOut  = new PrintWriter(clientSock.getOutputStream(), true);
        socketIn   = new BufferedReader(new InputStreamReader(clientSock.getInputStream()));
        this.iStatus    = 0;
      }
      catch (UnknownHostException e)
      {
         System.out.println(e);
         this.iStatus = 2;
      }
      catch (IOException e)
      {
         System.out.println(e);
         this.iStatus = 3;
      }

      if(iStatus == 0) iStatus = 1;
      return this.iStatus;
   }


   public int shutConnection() throws IOException
   {
	   return this.shutConnection(" ");
   }
   
   public int shutConnection(String sQuitMsg) throws IOException
   {
	if(this.isConnected())
	{
		this.quit(sQuitMsg);
		clientSock.close();
		iStatus = 0;
	}

	return this.iStatus;
   }


   public void write(String sMsg) throws IOException
   {
	if(!this.isConnected())
	{
		return;
	}
	   
	this.socketOut.println(sMsg);
   }
   
   public String read() throws IOException
   {
	if(!this.isConnected())
	{
		return " ";
	}

	return this.socketIn.readLine();
   }

   private boolean isConnected()
   {
	return (this.iStatus == 1)? true : false;
   }
   



/* PROTOCOL COMMAND METHODS AS DEFINED IN RFC 1459 */

   public void logIn(String sNickName) throws IOException
   {
      if(!this.isConnected())
      {
	      return;
      }
      
      this.write("nick " + sNickName);
      this.write("user "+ sNickName +" 0 0 :" + sNickName);
   }

   public void pong(String sPongId) throws IOException
   {
	if(!this.isConnected())
	{
		return;
	}

	this.write("PONG " + sPongId);
   }

   public void nick(String sNickName) throws IOException
   {
	if(!this.isConnected())
	{
		return;
	}
	   
	this.write("nick " + sNickName);
   }

   public void joinChan(String sChannel) throws IOException
   {
	if(!this.isConnected())
	{
		return;
	}

	this.write("join " + sChannel);
   }

   public void topic(String sChan, String sTitle) throws IOException
   {
	if(!this.isConnected())
	{
		return;
	}

	this.write("topic " + sChan + " :" + sTitle);
   }

   public void privmsg(String sNick, String sMsg) throws IOException
   {
	if(!this.isConnected())
	{
		return;
	}
	   
	this.write("privmsg " + sNick + " :" + sMsg);
   }

   public void notice(String sNick, String sMsg) throws IOException
   {
	if(!this.isConnected())
	{
		return;
	}

	this.write("notice " + sNick + " :" + sMsg);
   }

   public void action(String sNick, String sMsg) throws IOException
   {
	if(!this.isConnected())
	{
		return;
	}

	this.write("privmsg " + sNick + " :?ACTION" + sMsg + "?");
   }

   private void quit(String sQuitMsg) throws IOException
   {
	if(!this.isConnected())
	{
		return;
	}

	this.write("quit :" + sQuitMsg);
   }


}
 

Clue

Mitglied
vielen Dank

das hilft mir sehr viel weiter, den code an sich verstehe ich

aber sage mir eben , das ist doch jetzt nur die funktion oder??

also ich müsste doch rein theorethisch sttt dne host string und sowas immer meine xpliziten eingaben dann vonehmen , bzw das script für meine bedürfnisse anpassne doer?
 

Clue

Mitglied
habe nochmal drüber geschaut ...


ähm also sehe ichd as richtig das das hier eigentlich so übernommen werden kann ,

ich eine neue Datei öffne und in dieser mein programm /Bot schreibe , indem ich dann die einzelnen Mehtoden aus deiner Vorlage aufrufen kann??

schreibt mals chnell back , wäre cool

und nochmal danke !!!!!!
 

odysseus

Bekanntes Mitglied
ich bastel auch gerade an meinem irc client.

kennt ihr das, das out.println, out sei OutputStream oder PrintWriter, der String nur bis zum ersten Leerzeichen zum Server übertragen wird ??

ich habs debuggt, der String geht komplett in die println-Methode, aber dann muss was schief gehen ?

danke.
 

odysseus

Bekanntes Mitglied
habs geklärt:

funzt nicht:
"PRIVMSG " + #channel+ " " + msg;

funzt:
"PRIVMSG " + #channel + " :" + msg;


ich hatte den doppelpunkt vergessen!
peace.
 

Clue

Mitglied
also ich habe das problem das der bei mir wenn ich

Objekt von IrcStream ist hier fifabot

fifabot.logIn(nickname);

geht einfach nit , entweder der sagt dann
first register oder der sagt not enough paramters in USER

einer ne idee , ich rätsel in diversn channeln mit andren leuten drann rum

wenn eienr das shcon hat mal posten , aber auhc ideen sind gefragt
 

Clue

Mitglied
Also ich komme nit weiter , er gibt immer folgendes aus::

Ich habe zusätzlich die Klasse IrcStream.java benutzt , die ganz oben gepostet worden ist!!

wäre über jede hilfe erfreut!!

Code:
---------- Run ----------
start
NOTICE AUTH :*** Checking Ident
NOTICE AUTH :*** No ident response
:demon1.uk.quakenet.org 451 testbot testbot :Register first.





Code:
//Imports
import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Vector;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import java.net.*;
import javax.imageio.*;
import java.awt.image.*;

//Klassenerzweugung
public class Fifastadiumbot extends Frame implements ActionListener
{
	//Initialisierungen
	Vector hatStadium;

	IrcStream fifabot;
	
	Button start;
	
	String username ="testbot";
	String nickname="testbot";

	// innere Klassen

	MouseListener Mauslauscher = new MouseListener()
   	{
		public void mouseClicked(MouseEvent e) {} 
		public void mousePressed(MouseEvent e) {}
		public void mouseReleased(MouseEvent e) {}
		public void mouseEntered(MouseEvent e) {}
		public void mouseExited(MouseEvent e)  {}
   	};
   	
		public class MyThread extends Thread
	{
		public void run() 
		{
			String str;
			try
			{

				
				while ((str = fifabot.read()) != null)
				{
					String a = fifabot.read();
					System.out.println(a);
					if (a.startsWith("PING")) fifabot.write("PONG" + a.substring(4));
		 
				}
			}
			catch(Exception e)
			{
				
			}
	
		}
	}

   	
	//Kontruktor
	public Fifastadiumbot()
	{
 
		this.setLayout(null);
		this.setSize(600,600);
		this.setBackground(Color.gray);
		this.setTitle("Fifa Stadium BOT 1.0");
		
		start= new Button ("auslese starten lassen");
		start.setBounds(400,185,180,20);  
		start.addActionListener(this);
		start.setActionCommand("start");
		this.add(start);
		

		
		this.setVisible(true);
		
		this.addWindowListener(new WindowAdapter() 
		{  
			public void windowClosing(WindowEvent e)
			{
				System.exit(0);
			}  
		});
	}

	//Alles was auf Reaktionen vom ActionListener reagieren soll
	public void actionPerformed(ActionEvent e)
	{
		String s=(String)e.getActionCommand();

		if(s.equals("start"))
		{
			botstart();

			System.out.println("start");
		}
	}

	//Platz für Methoden/Funktionen

	public void botstart()
	{
		try
		{   
			MyThread t = new MyThread();
			
			fifabot = new IrcStream("irc.quakenet.eu.org",6667);
			t.start();
			
            fifabot.logIn(nickname);
			//fifabot.write("NICK " + nickname);
			//fifabot.write("USER " + username);
				
			fifabot.joinChan("natobase");

			//fifabot.joinChan("natobase");
		}
		catch(Exception er)
		{
			System.out.println(er);
		}
	}

	//Mainmethode
	
	public static void main(String [] args)
	{
		new Fifastadiumbot();
	}







}
 
S

stev.glasow

Gast
Clue hat gesagt.:
habs selber schon raus , melde mich aber bei weiteren Problemen
Mir ist so etwas hier schon öfter aufgefällen: Könntet ihr beim nächsten Mal noch eure Lösung posten, das ist eigendlich so üblich. Danke.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
L Chat Fenster Netzwerkprogrammierung 1
J Socket Ein Chat Server Tutorial Netzwerkprogrammierung 8
S Java Chat Server Netzwerkprogrammierung 8
J Chat Server starten über GUI problem Netzwerkprogrammierung 4
P Chat in Java Netzwerkprogrammierung 3
C Java Chat Admin Kenzeichnung Netzwerkprogrammierung 14
D Chat Server/mehre Client Netzwerkprogrammierung 9
Androbin Socket Fehlerhafter Applet-Chat Netzwerkprogrammierung 12
C Microsoft Comic Chat Netzwerkprogrammierung 0
G Socket Socket verbindung für Chat System Netzwerkprogrammierung 3
O Chat (Server) sendet an verschieden Benutzer. Netzwerkprogrammierung 10
J Chat programmieren Netzwerkprogrammierung 12
L Chat Server programmieren Netzwerkprogrammierung 10
TheJavaKid Webcam-Chat im Applet (ChatRoulette Klon) Netzwerkprogrammierung 10
H Socket Java Chat - Verbindung zum Server fehlgeschlagen. Netzwerkprogrammierung 5
K Socket Chat-GUI eigenes Event nach Empfangen Netzwerkprogrammierung 2
K chat Netzwerkprogrammierung 13
F RMI einfacher Chat - Callbacks(?) funktionieren nicht Netzwerkprogrammierung 7
L Socket Chat funktioniert nicht Netzwerkprogrammierung 2
T Socket Java Chat Netzwerkprogrammierung 2
xDarkSunx Chat JFrame Netzwerkprogrammierung 3
xDarkSunx Hilfe Chat Login Netzwerkprogrammierung 7
E JAVA Chat Netzwerkprogrammierung 19
C Java Chat funktioniert nicht richtig Netzwerkprogrammierung 6
I Chat-Client empfängt nichts vom Server Netzwerkprogrammierung 3
A Socket UDP Chat Verbindungsproblem im WWW (Server sendet ins leere) Netzwerkprogrammierung 11
A Multi-User-Chat Netzwerkprogrammierung 2
M Socket Chat-Client-Problem Netzwerkprogrammierung 8
E Userliste für Chat Applet Netzwerkprogrammierung 4
L Socket Chat Server für mehrere Clients Netzwerkprogrammierung 7
J Framework/ Muster für Chat-ähnliches Programm gesucht Netzwerkprogrammierung 2
AMStyles Client Server basierter Chat Netzwerkprogrammierung 7
M chat als applet umgeschrieben - unbekannter fehler :( Netzwerkprogrammierung 2
P Socket Chat selbst bauen + Multiusereditor Netzwerkprogrammierung 13
T Java Chat über UDP Netzwerkprogrammierung 7
Developer_X Habe fragen zur Chat Programmierung Netzwerkprogrammierung 4
P Java Multiuser Chat hohe Systemauslastung Netzwerkprogrammierung 24
D Hilfe ich komme bei meinem UDP chat Server nicht mehr weiter Netzwerkprogrammierung 9
B Die alte Leier: "Chat" Netzwerkprogrammierung 3
M chat funktioniert nicht (Connection refused: connect) Netzwerkprogrammierung 3
R Java-Chat-Applet funktioniert nur in Eclipse Netzwerkprogrammierung 3
S Client-Server Chat Problem nur im lokalen Netztwerk Netzwerkprogrammierung 23
DamienX Chat Socketserver/Client. wo ist das Problem? Netzwerkprogrammierung 2
J Client-Client-Chat ohne Serverbeteiligung Netzwerkprogrammierung 2
A Wichtig für einen Chat? Netzwerkprogrammierung 4
S Java Applet Chat Grundsatzfrage Netzwerkprogrammierung 6
R Java Chat über Inet connecten Netzwerkprogrammierung 3
F Chat Programm. Verständnisfrage while-Schleife Netzwerkprogrammierung 7
P Probleme bei Chat programm Netzwerkprogrammierung 2
C Voice Chat Netzwerkprogrammierung 3
G FAQ Chat geht nicht ? Netzwerkprogrammierung 4
T Schriftfarbe im Chat ändern Netzwerkprogrammierung 2
G ActionEvent klappt beim Chat nicht Netzwerkprogrammierung 5
J Kleines Problem mit Chat Server Netzwerkprogrammierung 2
T Chat-Client Netzwerkprogrammierung 12
G Chat zwischen applets: möglich? Netzwerkprogrammierung 2
T Chat mit mehreren Clients Netzwerkprogrammierung 3
C Chat , Streamproblem, PumpingException, Danke Netzwerkprogrammierung 2
S RMI Chat Problem, Client bekannt machen Netzwerkprogrammierung 2
V probleme mit dem chat programm Netzwerkprogrammierung 4
K Lokaler Chat Netzwerkprogrammierung 5
S Chat aufs Internet ausweiten Netzwerkprogrammierung 5
J Router behindert Chat Netzwerkprogrammierung 9
S Knuddels Chat System: Bot / Nachrichten verschicken? Netzwerkprogrammierung 6
G Chat - was brauch ich Netzwerkprogrammierung 2
André B. Brauche Hilfe bei Chat Netzwerkprogrammierung 6
K Problem mit "Chat" Netzwerkprogrammierung 2
N Java-Chat (lauffähig) macht Probleme auf der Konsole Netzwerkprogrammierung 6
Paule Acces denied bei Chat Netzwerkprogrammierung 6
B Multi-chat Problem Netzwerkprogrammierung 3
N Java Chat-Problem Netzwerkprogrammierung 4
G Java Chat mit HTML Cleint Netzwerkprogrammierung 3
G Chat Programm - was ist los? Netzwerkprogrammierung 9
A server mit 2 Ports : Mit und ohne SSL Chat system Netzwerkprogrammierung 10
Z chat: wann http und wann sockets verwenden? Netzwerkprogrammierung 11
M Socket Verbindungen für einen Chat Netzwerkprogrammierung 10
R Mini-Chat löst BindException aus Netzwerkprogrammierung 7
F Multiclient Chat Netzwerkprogrammierung 12
K Chat: Nur 1 Verbindung zum Server möglich :( Netzwerkprogrammierung 6
K Chat: Verbindung kommt nicht zu stande Netzwerkprogrammierung 6
S JAV07P SGD client/server chat Netzwerkprogrammierung 4
S Einfacher Multiuser chat in java Netzwerkprogrammierung 18
M Html Auslesen Netzwerkprogrammierung 6
x46 byte[] über BufferedReader auslesen Netzwerkprogrammierung 18
E Socket Parameter über Sockets übergeben und auslesen ! Netzwerkprogrammierung 5
J WLAN-Signalstärke in dbm auslesen Netzwerkprogrammierung 1
C IFrame mit java auslesen Netzwerkprogrammierung 1
DeathsGun Zeile von Streamcloud auslesen Netzwerkprogrammierung 1
Z HTTP HTML Element auslesen in Java Netzwerkprogrammierung 1
D Webseite(mit JavaScript-Element) mit Java auslesen Netzwerkprogrammierung 0
J Webformular auslesen Netzwerkprogrammierung 2
D Einfache Verbindung zu Linux Server und Datei auslesen Netzwerkprogrammierung 13
B XMLRPC-Schnittstelle. Einzelne Felder aus dem Object auslesen Netzwerkprogrammierung 2
F Daten aus Internetseiten auslesen Netzwerkprogrammierung 56
precoc IP Auslesen Netzwerkprogrammierung 4
S HTML mit AJAX auslesen Netzwerkprogrammierung 2
S HTTP Pakete Auslesen Netzwerkprogrammierung 22
B Authentifikation und anschliesendes auslesen von JSON Netzwerkprogrammierung 2
M lokale Benutzer auslesen Netzwerkprogrammierung 28

Ähnliche Java Themen

Neue Themen


Oben