![]() |
irc + clientsocket
Hi@all!
ich wollte mal probieren wie man mittels des clientsocket an einen irc-server verbindet und auch daten von ihm bekommt, bzw sendet ( auch privat message) nur ich weiß nicht wie ich das machen soll! bei mir geht der nur bis connected! kann mir da jmd helfen? danke für jede antwort! |
Re: irc + clientsocket
Hi,
ein guter Start ist sicher mal, sich das RFC durchzulesen, da steht eigentlich alles drin, was du wissen musst (im das IRC-Protokoll umzusetzen). Prinzipiell sendet der Client am anfang seinen USER- und NICKname: USER <username> <hostname> <servername> :<realname> NICK <nickname> Anschließend sendet der Server für gewöhnlich eine NOTICE, auf jeden Fall aber ein PING <irgendwas>, auf das du mit PONG <irgendwas> (wobei <irgendwas> das selbe sein muss) antworten musst. Alles weitere ist dann spezifisch... cu BTW: Das RFC findest du auf ![]() |
Re: irc + clientsocket
das rfc habe ichmir shcon mal angeguckt, nur bin net draus schlau geworden! aber ich gucke mal nach dem was du mir da geschrieben hast!
danke noch! |
Re: irc + clientsocket
Hi,
das RFC beschreibt halt das komplette Protokoll, das ist vielleicht nicht gerade benutzerfreundlich, aber nunja... Ist eben eines der Dinge, mit denen man sich herumschlagen muss, wenn man für ein bestimmtes Protokoll Software schreibt ;). Du kannst das ganze ja mal mithilfe von Telnet simulieren: Windowstaste+R drücken, "telnet <IRCserver> 6667" eingeben und dann die von mir erwähnten zeilen schicken... cu |
Re: irc + clientsocket
hättest du da vllt mal nen beispiel? weil das was ich habe funktioniert nicht!
Delphi-Quellcode:
memo1.Lines.Add('connect');
clientsocket1.Socket.SendText('USER <top10> <addy> <irc.knuddelknutscher.biz> :<realname>'); clientsocket1.Socket.SendText('NICK <top10>'); |
Re: irc + clientsocket
Hi,
Zitat:
Delphi-Quellcode:
Eine Anmerkung noch: Bei dem dritten Parameter von USER, also dem Hostname, ist es besser, den Hostname zu benutzen, zu dem ClientSocket1 wirklich verbunden ist - das muss nicht unbedingt der angegebene in ClientSocket1.Host sein, schließlich gibt es im DNS auch Weiterleitungen...
ClientSocket1.Socket.SendText('USER top10 addy irc.knuddelknutscher.biz :Echter Name'+#13#10);
ClientSocket1.Socket.SendText('NICK top10'+#13#10); cu |
Re: irc + clientsocket
und noch ne frage:
ich habe:
Delphi-Quellcode:
und bekomme keien daten ins memofeld außer das was das programm ausgibt, also
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket); begin memo1.Lines.Add(socket.ReceiveText); end; procedure TForm1.ClientSocket1Write(Sender: TObject; Socket: TCustomWinSocket); begin memo1.Lines.Add(socket.ReceiveText) end;
Delphi-Quellcode:
wieso?
memo1.Lines.Add('connect');
|
Re: irc + clientsocket
so, nachdem ich das so gemahct habe wie du es gesgat hast bekam ich auch daten1 danke erstmal! weißt du vllt noch die befehle für privatmessage senden und empfangen, joinen und nachrichten im chan empfangen und senden?
|
Re: irc + clientsocket
wieder mal ich!
habe das mit ping udn pong probiert.
Delphi-Quellcode:
der sendet aber kein pong!
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket); var text:string; begin memo1.Lines.Add(socket.ReceiveText); if copy(socket.ReceiveText,1,4)='PING' then begin text:=socket.ReceiveText; delete(text,1,pos(':',text)); ClientSocket1.Socket.SendText('PONG :'+text+#13#10); memo1.Lines.Add('PONG :'+text+#13#10); end; end; |
Re: irc + clientsocket
Hi,
Zitat:
Außerdem sendest du was falsches: Du empfängst dreimal Text (Zugriff auf socket.Receivetext), aber die Nachricht ist ja in einem Stück... Also so müsste es aussehen:
Delphi-Quellcode:
cu
var text:string;
begin text:=socket.ReceiveText; Memo1.Lines.Add('Empfangen: "'+text+'"'); if (lowercase(copy(text,1,4)) = 'ping') then begin // Hab die Parameter von delete() nicht ganz im Kopf, aber müsste es nicht Pos(':',text)+1 sein, wenn du nachher nochmal : vornedranstellst? Delete(text,1,Pos(':',text)+1); socket.SendText('PONG :'+text+#13#10); Memo1.Lines.Add('Gesendet: PONG :'+text+#13#10); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz