AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Frage zu SocketServer und senden an einen Client
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu SocketServer und senden an einen Client

Ein Thema von tavoc · begonnen am 17. Okt 2005 · letzter Beitrag vom 20. Okt 2005
Antwort Antwort
Seite 1 von 2  1 2      
tavoc

Registriert seit: 4. Dez 2004
Ort: Brandenburg
19 Beiträge
 
#1

Frage zu SocketServer und senden an einen Client

  Alt 17. Okt 2005, 18:07
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.
  Mit Zitat antworten Zitat
Benutzerbild von Net7
Net7

Registriert seit: 22. Jun 2004
Ort: Lauenburg
161 Beiträge
 
Delphi 7 Professional
 
#2

Re: Frage zu SocketServer und senden an einen Client

  Alt 17. Okt 2005, 23:13
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.
Marko
So`ne Atombombe kann einem den ganzen Tag verderben!
Eine eigene DLL in C++ geschrieben wird meist ein Sklave für mein Delphi/Pascal.
  Mit Zitat antworten Zitat
ripper8472

Registriert seit: 17. Aug 2003
275 Beiträge
 
#3

Re: Frage zu SocketServer und senden an einen Client

  Alt 17. Okt 2005, 23:23
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.
Christoph
  Mit Zitat antworten Zitat
tavoc

Registriert seit: 4. Dez 2004
Ort: Brandenburg
19 Beiträge
 
#4

Re: Frage zu SocketServer und senden an einen Client

  Alt 18. Okt 2005, 06:17
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.
  Mit Zitat antworten Zitat
flossinger

Registriert seit: 22. Aug 2005
Ort: südlich der Alpen
109 Beiträge
 
Delphi 5 Standard
 
#5

Re: Frage zu SocketServer und senden an einen Client

  Alt 18. Okt 2005, 18:39
Hallo,
was ripper hier schreibt ist nicht richtig:
Zitat:
richtig, sendtext uebertraegt ansistrings, die nur borland und damit entwickelte programme verstehen.
Ganz im Gegenteil, was sendtext() versendet, kann allgemein gelesen werden, WENN DAS RICHTIGE VERSENDET WIRD. Das habe ich auch intensiv getestet: Webapplikationen, in denen ich sendtext verwende, kommunizieren erfolgreich und problemlos mit jedem Webserver und jedem Mailserver.

der Flossinger
  Mit Zitat antworten Zitat
ripper8472

Registriert seit: 17. Aug 2003
275 Beiträge
 
#6

Re: Frage zu SocketServer und senden an einen Client

  Alt 18. Okt 2005, 19:35
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.
Christoph
  Mit Zitat antworten Zitat
tavoc

Registriert seit: 4. Dez 2004
Ort: Brandenburg
19 Beiträge
 
#7

Re: Frage zu SocketServer und senden an einen Client

  Alt 19. Okt 2005, 06:31
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...
  Mit Zitat antworten Zitat
Benutzerbild von Net7
Net7

Registriert seit: 22. Jun 2004
Ort: Lauenburg
161 Beiträge
 
Delphi 7 Professional
 
#8

Re: Frage zu SocketServer und senden an einen Client

  Alt 19. Okt 2005, 17:07
Zitat von tavoc:
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...

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:
// fiktive Datenannahme von Trillian, mal angenommen
Socket.ReceiveBuf(Clientpaket_empfangen,sizeof(Clientpaket_empfangen));
Dann wird Dein sendtext() nicht viel bringen, weil du gänzlich einen falschen Typ schickst.

Solange du nicht weißt was du Trillian schicken musst, wirst du scheitern.

Um das herrauszufinden, müstest du schon die Entwickler fragen.
Marko
So`ne Atombombe kann einem den ganzen Tag verderben!
Eine eigene DLL in C++ geschrieben wird meist ein Sklave für mein Delphi/Pascal.
  Mit Zitat antworten Zitat
tavoc

Registriert seit: 4. Dez 2004
Ort: Brandenburg
19 Beiträge
 
#9

Re: Frage zu SocketServer und senden an einen Client

  Alt 19. Okt 2005, 21:43
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.
  Mit Zitat antworten Zitat
ripper8472

Registriert seit: 17. Aug 2003
275 Beiträge
 
#10

Re: Frage zu SocketServer und senden an einen Client

  Alt 19. Okt 2005, 22:30
ignoriere das. irc ist text, hauptsaechlich.

funktioniert dein programm jetzt?
Christoph
  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 17:21 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