Laden...

irc client selber schreiben

Erstellt von Afrokalypse vor 18 Jahren Letzter Beitrag vor 14 Jahren 5.276 Views
A
Afrokalypse Themenstarter:in
452 Beiträge seit 2005
vor 18 Jahren
irc client selber schreiben

hi leute 😉

ich habe vor mir mal einen irc client zusammen zu basteln. allerdings weiss ich nicht genau wo ich da anfangen soll.

was ich mir bisher zusammengesucht habe war:

-System.Net
-System.Net.Sockets.NetworkStream

  •                         .TCPClient  
    
  •                         .TCPListener  
    

da ich mich noch nicht mit client server anwendungen unter c# auseinandergesetzt habe, muss ich mich da erst komplett einarbeiten.

es würde mich freuen wenn mir jemand nen paar stichwörter oder Links/Tutorials dazu, und zu client-server anwendungen geben kann.

mfg
Afr0

Signatur:
Die Signatur wird unter Ihren Beiträgen dargestellt.

😁 😮 ?( 8) 😭 8o :] 🙁 =) X( 🙂 😜 😉 :rolleyes: 👶 :evil: 👅
Smilies find ich doof =]

A
Afrokalypse Themenstarter:in
452 Beiträge seit 2005
vor 18 Jahren

ok ich habe jetzt soweit versucht mich da selbst durch zu hangeln und habe nach der doku aus der sdk versucht eine connection zu einem irc server via tcp client herzustellen. ob das so richtig ist weiss ich nicht!

ich habe nun folgendes problem: mein client versucht eine verbindung aufzubauen, zonealarm meldet sich und ich gebe die anfrage bei zonealarm frei.

connect methode:


public void connect(string message)
		{
			try
			{
				//connection herstellen
				this._client = new TcpClient(this.ServerIP,this.ServerPort);
				//message als bytes umwandeln
				Byte[] daten = Encoding.Default.GetBytes(message);
				//datenübertragung über einen allgemeinen stream
				Stream stream = this._client.GetStream();
				//verbindungsstream für netzzugriff
				NetworkStream netStream = this._client.GetStream();
				//daten senden
				stream.Write(daten,0,daten.Length);
				Console.WriteLine("gesendet: {0}",message);

				//antwort
				daten = new Byte[256];				
				int bytes = stream.Read(daten,0,daten.Length);
				this.antwort = Encoding.Default.GetString(daten,0,bytes);
			}
			catch(SocketException e)
			{
				MessageBox.Show(e.Message);
			}
		}

bei aufruf meiner connection erstelle ich ein clientfenster (mdi child) das die methode dann aufruft:


//was genau soll da rein?
this._server._connection.connect("/connect "+this._server._connection.ServerIP+":"+this._server._connection.ServerPort.ToString());

danach bekomme ich eine socketexception:

'Der angeforderte Name ist gültig und wurde in der Datenbank gefunden. Er verfügt jedoch nicht über die richtigen zugeordneten Daten, die ausgewertet werden sollten.'

an der stelle des 2. codeabschnitts bin ich mir nun nicht genau sicher was für einen string ich übergeben soll um eine verbindung mit dem irc server den ich übergebe, aufzubauen.

kann mir hier jemand weiterhelfen?

mfg
Afr0

Signatur:
Die Signatur wird unter Ihren Beiträgen dargestellt.

😁 😮 ?( 8) 😭 8o :] 🙁 =) X( 🙂 😜 😉 :rolleyes: 👶 :evil: 👅
Smilies find ich doof =]

6.862 Beiträge seit 2003
vor 18 Jahren

Falls du nicht den ganzen Verbindungskram selbst erledigen möchtest könntest auch ne fertige Lib nehmen, gibts ja einige im Netz, hier z.b.. Dann kannst dich auf den eigentlichen Client konzentrieren.

Baka wa shinanakya naoranai.

Mein XING Profil.

A
Afrokalypse Themenstarter:in
452 Beiträge seit 2005
vor 18 Jahren

hallo talla.

die idee war ja eigentlich, dass ich mich in client server anwendungen unter c#einarbeite. da fand ich einen irc client recht angebracht 🙂

trotzdem danke 😉

Signatur:
Die Signatur wird unter Ihren Beiträgen dargestellt.

😁 😮 ?( 8) 😭 8o :] 🙁 =) X( 🙂 😜 😉 :rolleyes: 👶 :evil: 👅
Smilies find ich doof =]

4.221 Beiträge seit 2005
vor 18 Jahren

IRC ist nicht unbedingt für den Einstieg geeignet....

Denn sobald der Connect läuft fliegst du eh gleich wieder raus wenn Du nicht die richtigen Commands schickst....

Ich denke da so an Ping / Pong / :NickServ usw.....

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

A
Afrokalypse Themenstarter:in
452 Beiträge seit 2005
vor 18 Jahren

nen paar commands weiss ich ja noch 🙂 nur leider nicht diejenigen die ich für den verbindungsstart brauche 🙂

kannst du mir vllt sagen wo ich die nachlesen kann? das wäre echt prima 😉

mfg
Afr0

Signatur:
Die Signatur wird unter Ihren Beiträgen dargestellt.

😁 😮 ?( 8) 😭 8o :] 🙁 =) X( 🙂 😜 😉 :rolleyes: 👶 :evil: 👅
Smilies find ich doof =]

D
58 Beiträge seit 2005
vor 18 Jahren

http://www.ietf.org/rfc/rfc1459.txt?number=1459

Wenn du mIRC verwendest mag es eventuell auch hilfreich sein per /debug @DebugWindow in einem Fenster die Datenübertragung zu verfolgen.

MfG

A
Afrokalypse Themenstarter:in
452 Beiträge seit 2005
vor 18 Jahren

ich hab mir das jetzt übers wochenende mal angesehen und bin ein wenig enttäuscht. die api ist sehr unausführlich und nach dem beispiel aus codeproject bin ich auch nicht viel weiter gekommen 🙁

gibt es noch andere freie libaries die vllt besser erklärt werden? oder sonstige tutorials die sich mit dem thema auseinandersetzen?

würde mich über jeden link freuen.

mfg
Afr0

Signatur:
Die Signatur wird unter Ihren Beiträgen dargestellt.

😁 😮 ?( 8) 😭 8o :] 🙁 =) X( 🙂 😜 😉 :rolleyes: 👶 :evil: 👅
Smilies find ich doof =]

4.221 Beiträge seit 2005
vor 18 Jahren

@Afrokalypse

Damit Du nicht ganz bei Null beginnen musst hab ich Dir mal die wichtigsten Sequenzen des Logins zusammengestellt .....

Primäre Kennung nach dem Connect

"user java 0 JavaUser :JavaUser" oder z.B: "user IrcNext Irc Next :IrcNext Alphaversion"

Setzen des Nicknames:

string.Format("NICK {0}",value)

NickServ-Authentication (registrierter Nick)

string.Format(":NICKSERV identify {0} {1}", authenticationName , passWord)

Ping / Pong:

Wenn ein Ping daherkommt (Ping und ein String welcher die Session-Id repräsentiert)
Wie folgt quittieren:

string.Format("PONG :{0}\n",strSessionID)

Wenn Du dies so übernimmst sollte dich der IRC-Server eigentlich akzeptieren und Dich nicht mehr rausschmeissen.

Viel Vergnügen damit 😉

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

A
Afrokalypse Themenstarter:in
452 Beiträge seit 2005
vor 18 Jahren

hallo programmierhans.

danke für die kleine einführung
ich denke das könnte mir schon weiterhelfen 🙂

mal sehen wie weit ich damit komme 😉

mfg
Afr0

Signatur:
Die Signatur wird unter Ihren Beiträgen dargestellt.

😁 😮 ?( 8) 😭 8o :] 🙁 =) X( 🙂 😜 😉 :rolleyes: 👶 :evil: 👅
Smilies find ich doof =]

A
Afrokalypse Themenstarter:in
452 Beiträge seit 2005
vor 18 Jahren

ich habe jetz doch noch mal den eigenen verbindungsverscuh zur seite gelegt und mir die testklasse aus der .bin von smartirc angesehen. die ist schon ziemlich ausführlich dokumentiert und da komme ich auch soweit, dass ich mich zu einem server verbinden kann und auch einen channel betreten kann. authen klappt auch wunderbar 🙂

allerdings klappt das senden und empfangen einer message noch nicht.
dazu kommt noch, dass ich mir nicht sicher bin an welcher stelle ich die ping und pong methoden einbauen soll bzw ob ich diese unter smartirc überhaupt benutzen muss.

wenn ich mich nicht irre, dann bräuchte ich wohl einen thread, der die ganze zeit auf dem server lauscht, und einen thread über den ich text senden und empfangen kann.

mal sehen was ich noch so herausfinde 🙂

mfg
Afr0

Signatur:
Die Signatur wird unter Ihren Beiträgen dargestellt.

😁 😮 ?( 8) 😭 8o :] 🙁 =) X( 🙂 😜 😉 :rolleyes: 👶 :evil: 👅
Smilies find ich doof =]

A
Afrokalypse Themenstarter:in
452 Beiträge seit 2005
vor 18 Jahren

so der client funktioniert soweit 🙂

jetzt werde ich mich mal ranhalten eine formbasierte anwendung dafür zu erstellen.

mfg
Afr0

Signatur:
Die Signatur wird unter Ihren Beiträgen dargestellt.

😁 😮 ?( 8) 😭 8o :] 🙁 =) X( 🙂 😜 😉 :rolleyes: 👶 :evil: 👅
Smilies find ich doof =]

A
196 Beiträge seit 2005
vor 18 Jahren

Wie hast du das Anmeldeproblem den jetzt gelöst? Wenn ich das in der Reihenfolge wie Programmierhans meinte kommt bei NICKSERV identify nick 123456 die Meldung vom IRC: "451 NICKSERV :You have not registered"

M
40 Beiträge seit 2006
vor 17 Jahren

Original von Afrokalypse
so der client funktioniert soweit 🙂

jetzt werde ich mich mal ranhalten eine formbasierte anwendung dafür zu erstellen.

mfg
Afr0

könntest du den code mal posten? würde mich sehr dafür interresieren danke schonmal

4.221 Beiträge seit 2005
vor 14 Jahren

Wenn ich das in der Reihenfolge wie Programmierhans meinte kommt bei NICKSERV identify nick 123456 die Meldung vom IRC: "451 NICKSERV :You have not registered"

Funzt natürlich nur wenn man einen registrierten Nick hat.

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...