Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
irc client selber schreiben
Afrokalypse
myCSharp.de - Member



Dabei seit:
Beiträge: 452

Themenstarter:

irc client selber schreiben

beantworten | zitieren | melden

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.

:O ?( 8) ;( 8o :] =) X( :rolleyes: :baby: :evil: :tongue:
Smilies find ich doof =]
private Nachricht | Beiträge des Benutzers
Afrokalypse
myCSharp.de - Member



Dabei seit:
Beiträge: 452

Themenstarter:

beantworten | zitieren | melden

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.

:O ?( 8) ;( 8o :] =) X( :rolleyes: :baby: :evil: :tongue:
Smilies find ich doof =]
private Nachricht | Beiträge des Benutzers
talla
myCSharp.de - Experte

Avatar #avatar-3214.jpg


Dabei seit:
Beiträge: 6.862
Herkunft: Esslingen

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Afrokalypse
myCSharp.de - Member



Dabei seit:
Beiträge: 452

Themenstarter:

beantworten | zitieren | melden

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.

:O ?( 8) ;( 8o :] =) X( :rolleyes: :baby: :evil: :tongue:
Smilies find ich doof =]
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4.221
Herkunft: Zentralschweiz

beantworten | zitieren | melden

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...
private Nachricht | Beiträge des Benutzers
Afrokalypse
myCSharp.de - Member



Dabei seit:
Beiträge: 452

Themenstarter:

beantworten | zitieren | melden

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.

:O ?( 8) ;( 8o :] =) X( :rolleyes: :baby: :evil: :tongue:
Smilies find ich doof =]
private Nachricht | Beiträge des Benutzers
DivinitY
myCSharp.de - Member



Dabei seit:
Beiträge: 58
Herkunft: Österreich

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Afrokalypse
myCSharp.de - Member



Dabei seit:
Beiträge: 452

Themenstarter:

beantworten | zitieren | melden

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.

:O ?( 8) ;( 8o :] =) X( :rolleyes: :baby: :evil: :tongue:
Smilies find ich doof =]
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4.221
Herkunft: Zentralschweiz

beantworten | zitieren | melden

@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...
private Nachricht | Beiträge des Benutzers
Afrokalypse
myCSharp.de - Member



Dabei seit:
Beiträge: 452

Themenstarter:

beantworten | zitieren | melden

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.

:O ?( 8) ;( 8o :] =) X( :rolleyes: :baby: :evil: :tongue:
Smilies find ich doof =]
private Nachricht | Beiträge des Benutzers
Afrokalypse
myCSharp.de - Member



Dabei seit:
Beiträge: 452

Themenstarter:

beantworten | zitieren | melden

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.

:O ?( 8) ;( 8o :] =) X( :rolleyes: :baby: :evil: :tongue:
Smilies find ich doof =]
private Nachricht | Beiträge des Benutzers
Afrokalypse
myCSharp.de - Member



Dabei seit:
Beiträge: 452

Themenstarter:

beantworten | zitieren | melden

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.

:O ?( 8) ;( 8o :] =) X( :rolleyes: :baby: :evil: :tongue:
Smilies find ich doof =]
private Nachricht | Beiträge des Benutzers
alf468
myCSharp.de - Member



Dabei seit:
Beiträge: 196

beantworten | zitieren | melden

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"
private Nachricht | Beiträge des Benutzers
Michse
myCSharp.de - Member



Dabei seit:
Beiträge: 40

beantworten | zitieren | melden

Zitat
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
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4.221
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Zitat von alf468
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...
private Nachricht | Beiträge des Benutzers