AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

irc + clientsocket

Offene Frage von "mr.unbekannt"
Ein Thema von mr.unbekannt · begonnen am 16. Mai 2006 · letzter Beitrag vom 16. Mai 2006
Antwort Antwort
Seite 1 von 2  1 2      
mr.unbekannt

Registriert seit: 20. Jul 2005
Ort: Schwerin
152 Beiträge
 
Delphi 7 Professional
 
#1

irc + clientsocket

  Alt 16. Mai 2006, 11:43
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!
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#2

Re: irc + clientsocket

  Alt 16. Mai 2006, 12:00
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 http://www.faqs.org/rfcs/rfc1459.html
  Mit Zitat antworten Zitat
mr.unbekannt

Registriert seit: 20. Jul 2005
Ort: Schwerin
152 Beiträge
 
Delphi 7 Professional
 
#3

Re: irc + clientsocket

  Alt 16. Mai 2006, 12:03
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!
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#4

Re: irc + clientsocket

  Alt 16. Mai 2006, 12:07
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
  Mit Zitat antworten Zitat
mr.unbekannt

Registriert seit: 20. Jul 2005
Ort: Schwerin
152 Beiträge
 
Delphi 7 Professional
 
#5

Re: irc + clientsocket

  Alt 16. Mai 2006, 12:10
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>');
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#6

Re: irc + clientsocket

  Alt 16. Mai 2006, 12:16
Hi,

Zitat von mr.unbekannt:
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>');
Der Ansatz ist schon richtig... Allerdings dienten die <> nur dazu, auszudrücken, dass hier etwas zu ersetzendes steht. Außerdem schließt man (nicht nur im IRC) Zeilen mit #13#10 (CRLF) ab. Quelltext:
Delphi-Quellcode:
ClientSocket1.Socket.SendText('USER top10 addy irc.knuddelknutscher.biz :Echter Name'+#13#10);
ClientSocket1.Socket.SendText('NICK top10'+#13#10);
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...

cu
  Mit Zitat antworten Zitat
mr.unbekannt

Registriert seit: 20. Jul 2005
Ort: Schwerin
152 Beiträge
 
Delphi 7 Professional
 
#7

Re: irc + clientsocket

  Alt 16. Mai 2006, 12:19
und noch ne frage:
ich habe:
Delphi-Quellcode:
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;
und bekomme keien daten ins memofeld außer das was das programm ausgibt, also memo1.Lines.Add('connect'); wieso?
  Mit Zitat antworten Zitat
mr.unbekannt

Registriert seit: 20. Jul 2005
Ort: Schwerin
152 Beiträge
 
Delphi 7 Professional
 
#8

Re: irc + clientsocket

  Alt 16. Mai 2006, 12:22
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?
  Mit Zitat antworten Zitat
mr.unbekannt

Registriert seit: 20. Jul 2005
Ort: Schwerin
152 Beiträge
 
Delphi 7 Professional
 
#9

Re: irc + clientsocket

  Alt 16. Mai 2006, 12:29
wieder mal ich!

habe das mit ping udn pong probiert.
Delphi-Quellcode:
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var text:string;
begin
memo1.Lines.Add(socket.ReceiveText);
if copy(socket.ReceiveText,1,4)='PINGthen 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;
der sendet aber kein pong!
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#10

Re: irc + clientsocket

  Alt 16. Mai 2006, 12:44
Hi,

Zitat von mr.unbekannt:
wieder mal ich!

habe das mit ping udn pong probiert.
Delphi-Quellcode:
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var text:string;
begin
memo1.Lines.Add(socket.ReceiveText);
if copy(socket.ReceiveText,1,4)='PINGthen 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;
der sendet aber kein pong!
Bist du sicher, dass er das nicht sendet? Du bekommst vom Server darauf keine Antwort, sondern er "lässt dich dann rein".

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:
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;
cu
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz