![]() |
String wird nicht übers Netzwerk gesendet
Hallo,
habe folgendes Problem mit einem kleinen Programm, vielleicht könnt ihr mir helfen. Eigendlich soll nur ien einfacher Text ('Hallo'), über eine Netzwerkverbindung geschickt werden. Er geht aber sprichwörtlich ohne Fehlermeldung ins Nivada. Alles andere (Verbindung erstellen und überprüfuen etc. funktioniert einwandfrei.) Wo ist der Fehler? Bin am verzweifeln (3, 5 STunden daran rumprobiert) Hier der Code
Delphi-Quellcode:
[b]ServerCode[/b]
procedure TForm1.FormCreate(Sender: TObject; Socket: TCustomWinSocket); begin //Server wird geöffnet ServerSocket1.Open; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); Begin //Die Verbindung wird beendet ServerSocket1.Close; end; procedure TForm1.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket); var nachricht: String; begin //Der Text kommt in die Varibale nachricht nachricht :=Socket.ReceiveText; //Text wird dem memofeld hinzugefügt Memo1.Lines.Add(nachricht); end; [b]ClientCode[/b] procedure TForm1.FormCreate(Sender: TObject); begin // Verbindung wird hergestellt ClientSocket1.Open; end; procedure TForm1.sendenClick(Sender: TObject; Socket: TCustomWinSocket); begin //Nachricht wird gesendet ClientSocket1.Socket.SendText('Hallo'); end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin // Verbindung wird hergestellt ClientSocket1.close; end; |
DP-Maintenance
Dieses Thema wurde von "Matze" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Internet / LAN / ASP.NET" verschoben.
In die Code-Library gehören nur fertige Code-Snippets. |
Re: String wird nicht übers Netzwerk gesendet
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Dein Problem kann ich leider nicht erkennen. Welche Komponente feuert diese Event: sendenClick ? Ich habe Dir mal ein funktionierendes Beipiel angehängt |
Re: String wird nicht übers Netzwerk gesendet
Vielen Dank,
eine Frage noch, wo liegt beim Client der direkte unterschied zwischen Host und Adresse, ich habe bei beiden die ip angegeben, weil ich nichts darüber gefunden habe. |
Re: String wird nicht übers Netzwerk gesendet
Hi,
bei Host kannst du einen Hostnamen oder eine IP verwenden. bei Adresse nur eine IP. Gruss |
Re: String wird nicht übers Netzwerk gesendet
So, den Chat habe ich jetzt hinbekommen.
Aber ich hab noch eine Frage: Wenn ich vom ServerSocket die Verbindung trenne, gibt es beim clientSocket eine Event dafür, doch umgekehrt finde ich es nicht, gibt es da eine andere Möglichkeit? Lg |
Re: String wird nicht übers Netzwerk gesendet
Liste der Anhänge anzeigen (Anzahl: 1)
So leider ist beim Testen des Chats über ein richtiges Netztwerk (Programiert und erster Test mit 127.0.0.1) hat leider nicht funktioniert, sondern es entstand folgender Fehler:
"Asynchronous socket error 10061" Die Firewall ist bei beiden Pc´s ausgeschaltet. Hier der Quellcode: hoffentlich kann mir jemand einen Tipp geben
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ScktComp, StdCtrls, Spin; type TForm1 = class(TForm) GroupBox1: TGroupBox; GroupBox2: TGroupBox; Label2: TLabel; Label4: TLabel; mclientverbinden: TButton; mserververbinden: TButton; Label5: TLabel; Label6: TLabel; textc: TEdit; Edit1: TEdit; ssenden: TButton; csenden: TButton; ServerMemo: TMemo; ClientMemo: TMemo; ClientSocket1: TClientSocket; ServerSocket1: TServerSocket; Label7: TLabel; Label8: TLabel; SpinEdit1: TSpinEdit; SpinEdit2: TSpinEdit; Button1: TButton; Button2: TButton; ComboBox1: TComboBox; Procedure mclientverbindenClick(Sender: TObject); Procedure ServerSocket1Listen(Sender: TObject; Socket: TCustomWinSocket); Procedure mserververbindenClick(Sender: TObject); Procedure ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); Procedure csendenClick(Sender: TObject); Procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); Procedure ClientSocket1ServerRead(Sender: TObject; Socket: TCustomWinSocket); Procedure ssendenClick(Sender: TObject); Procedure Button2Click(Sender: TObject); Procedure Button1Click(Sender: TObject); Procedure clienttrennen(Sender: TObject; Socket: TCustomWinSocket); Procedure servertrennen(Sender: TObject; Socket: TCustomWinSocket); Procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.mclientverbindenClick(Sender: TObject); begin //ServerSocket wird geöffnet ServerSocket1.Port := SpinEdit1.Value; ServerSocket1.Active := True; end; procedure TForm1.ServerSocket1Listen(Sender: TObject; Socket: TCustomWinSocket); begin //Wenn ServerSocket Listen erscheint Text ServerMemo.Lines.Add('/-- Listen --\'); ServerMemo.Lines.Add('/-- Port: ' + IntToStr(ServerSocket1.Port)); end; Procedure Tform1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); begin //Wenn ClientSocket verbunden erscheint Text ClientMemo.lines.Add('/-- verbunden --\'); ClientMemo.Lines.Add('/-- Port: ' + IntToStr(clientSocket1.Port)); end; procedure TForm1.mserververbindenClick(Sender: TObject); begin //Client wird verbunden/aktiviert ClientSocket1.Port := SpinEdit1.Value; ClientSocket1.Active := True; ClientSocket1.Address := ComboBox1.Text; end; procedure TForm1.csendenClick(Sender: TObject); begin // Senden von text an Client If textc.Text = ' ' then else Begin If textc.Text = '' then else begin ClientSocket1.Socket.SendText(textc.Text); ClientMemo.Lines.Add('<Client>' + textc.Text); textc.Text := ''; end; end; end; Procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); begin //Text in ServerMemo schreiben ServerMemo.lines.Add('<Client>' + Socket.ReceiveText); end; Procedure TForm1.ClientSocket1ServerRead(Sender: TObject; Socket: TCustomWinSocket); begin //Text in ClientMemo schreiben ClientMemo.Lines.Add('<Server>' + ClientSocket1.Socket.ReceiveText); end; procedure TForm1.ssendenClick(Sender: TObject); begin // Senden von text an Server If Edit1.Text = ' ' then else Begin If Edit1.Text = '' then else begin ServerSocket1.Socket.Connections[0].SendText(Edit1.Text); ServerMemo.Lines.Add('<Server>' + Edit1.Text); Edit1.Text := ''; end; end; end; procedure TForm1.Button2Click(Sender: TObject); begin // trennen von Client ClientSocket1.Active := False; end; procedure TForm1.Button1Click(Sender: TObject); begin // Trennen von Server ServerSocket1.Active := False; ServerMemo.Lines.Add('/-- getrennt --\') end; Procedure Tform1.clienttrennen(Sender: TObject; Socket: TCustomWinSocket); Begin ClientMemo.Lines.Add('/-- getrennt --\') end; Procedure Tform1.servertrennen(Sender: TObject; Socket: TCustomWinSocket); Begin ClientMemo.Lines.Add('/-- getrennt --\') end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); Begin //Die Verbindung wird beendet ServerSocket1.Active := False; ClientSocket1.Active := False; end; end. |
Re: String wird nicht übers Netzwerk gesendet
Dein Router muss die Ports noch forwarden, sonst klappt das nicht.
|
Re: String wird nicht übers Netzwerk gesendet
Zitat:
|
Re: String wird nicht übers Netzwerk gesendet
Hallo,
Vielen dank für die Tipps, jetzt funktioniert es. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 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