![]() |
Frage zu SocketServer und senden an einen Client
Hallo,
ich sitze nun schon längere Zeit ein einem grundlegenden Problem, ich schaffe es nicht das mein Server einem Client Daten sendet. Ich möchte mit dem Programm erreichen das es sich "zwischen" 2 rechner schaltet, also z.b. Client und IRC Server, damit kann man z.b. die Portsperre an einigen Orten umgehen. Dazu connecte ich mit meinem Programm zu dem IrcServer und zu einem Irc Client (Trillian etc.), das Problem liegt darin das mein Programm Trillian nicht mitteilt was es vom IrcServer erhält. Der Fehler liegt irgendwo bei serversocket.Socket.Connections[0].SendText(empfangen), aber ich weiß nicht wie ich es sonst machen kann.
Delphi-Quellcode:
function TMainForm.connect():boolean;
begin ServerSocket.Port:=1024; ServerSocket.Open; if ClientSocket.Active then ClientSocket.Close; ClientSocket.host :='irc.spotchat.org'; ClientSocket.Port :=6667; ClientSocket.Open; end; procedure TMainForm.ToolButton1Click(Sender: TObject); begin connect; end; procedure TMainForm.ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket); var empfangen: string; begin empfangen := Socket.ReceiveText; memo1.Lines.Add(empfangen); if serversocket.Socket.Connected then serversocket.Socket.Connections[0].SendText(empfangen); end; procedure TMainForm.ToolButton2Click(Sender: TObject); begin ClientSocket.Close; ServerSocket.Close; end; procedure TMainForm.ServerSocketClientRead(Sender: TObject; Socket: TCustomWinSocket); var empfangen: string; begin empfangen := Socket.ReceiveText; memo1.Lines.Add(empfangen); clientsocket.Socket.SendText(empfangen); end; procedure TMainForm.ServerSocketClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin Memo1.Lines.Add('OnAccept'); Memo1.Lines.Add(Socket.RemoteAddress +'remoteadress'); Memo1.Lines.Add(IntToStr(Socket.RemotePort)+'remoteport'); Memo1.Lines.Add(Socket.LocalAddress+'localadress'); Memo1.Lines.Add(IntToStr(Socket.LocalPort)+'localport'); end; Ich danke schonmal im Vorraus für Eure Hilfe. |
Re: Frage zu SocketServer und senden an einen Client
Unabhängig davon, das ich bezweifle das, das was du vorhast überhaupt funktioniert kannst du ja mal
serversocket1.socket.sendtext(empfangen) probieren. Ich denke aber das Trillian seine Daten übern Buffer auswertet. So das es mit Sendtext nix anfangen kann. |
Re: Frage zu SocketServer und senden an einen Client
richtig, sendtext uebertraegt ansistrings, die nur borland und damit entwickelte programme verstehen.
du kannst nicht zu trillian verbinden, trillian muss zu dir verbinden. an deiner stelle wuerd ich mir noch zwei dummyprogramme schreiben, die als client und server herhalten und definierte daten versenden. |
Re: Frage zu SocketServer und senden an einen Client
Trillian verbindet ja schon zu meinem Programm, das heißt er greift ja auf die Sockets zu.
Ich erhalte von der Serverkomponente eine Authentifizierung. Die Daten die gesendet werden sind ja auch definiert, es gibt ja eine RFC fürs IRC, und da man Chatprogramme die sich des IRCs behelfen auch mit den Sockets schreiben kann, sollte es doch auch hier gehen. @ripper8472 das heißt also ich sollte anstatt der Serverkomponente noch ein Client nehmen? Das dürfte doch auch nicht gehen da da keine der Seiten (Mein Programm-Trillian) den Server spielt. |
Re: Frage zu SocketServer und senden an einen Client
Hallo,
was ripper hier schreibt ist nicht richtig: Zitat:
der Flossinger |
Re: Frage zu SocketServer und senden an einen Client
wieder was gelernt :)
@OP: du brauchst einen server, zu dem trillian verbindet und einen client, der zum irc server verbindet. vom irc protokoll musst du garnichts wissen. du musst nur die daten an beiden seiten durchreichen und gut is. |
Re: Frage zu SocketServer und senden an einen Client
Könntet Ihr mir noch sagen wo genau das sendtext() hinmuss damit es funktioniert?
So langsam bin ich am verzweifeln, wenn ich jetzt kompilieren würde kommt immer: das das Listenindex überschritten wird. Wenn ich nur sendtext schreibe kommt: socket nicht verbunden, bei einem sendto wurde keine adresse eingeben fehler 10057. Ich dachte das der server zu allen seinen clients senden würde... |
Re: Frage zu SocketServer und senden an einen Client
Zitat:
Nur mal angenommen Trillian wertet ankommende Daten über einen Buffer aus. Und Clientpaket_empfangen wäre der Buffer. Das würde in Delphi in etwa so aussehen:
Delphi-Quellcode:
Dann wird Dein sendtext() nicht viel bringen, weil du gänzlich einen falschen Typ schickst.
// fiktive Datenannahme von Trillian, mal angenommen
Socket.ReceiveBuf(Clientpaket_empfangen,sizeof(Clientpaket_empfangen)); Solange du nicht weißt was du Trillian schicken musst, wirst du scheitern. Um das herrauszufinden, müstest du schon die Entwickler fragen. |
Re: Frage zu SocketServer und senden an einen Client
Aber der IRC Server sendet doch auch nur text, ich habe mal nen eigenen client geschrieben und der hat auch alles mit text gemacht, wenn also trillian was anderes erwarten würde müssten ja alle ircserver das auch so senden.
Aber in der rfc steht doch das es text ist. |
Re: Frage zu SocketServer und senden an einen Client
ignoriere das. irc ist text, hauptsaechlich.
funktioniert dein programm jetzt? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 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