Server / Client
Server / Client
Hallo zusammen!
Ich habe zwei Anwendungen unter Windows XP programmiert die mit Hilfe einer Client-Server-Verbindung Kommunizieren.
Die Serveranwendung soll nun aber auf einem Linux-Rechner laufen.
Ich habe auch schon fast alles hinbekommen:
Der Client sucht den Server, findet ihn und baut eine Verbindung auf, dann werden Daten gesendet...
das wars!
Normalerweise soll nun eine Reaktion kommen, die kommt aber nie an. Ich habe meinem Router die neuen Portregeln gegeben, die Firewall auf dem Linux-System eingerichtet und es nur soweit hin bekommen, dass sich das Clientprogramm mit dem Server verbindet, dieser aber nichts zurücksenden kann.
Gibt es dafür noch mehr einzustellen in der Firewall???
Ein Webserver läuft auch auf der Maschine und ist aus dem Internet erreichbar. Anhand der Einstellungen habe ich auch die Firewall für dieses Programm eingereichtet.
Gruß Scoty
Ich habe zwei Anwendungen unter Windows XP programmiert die mit Hilfe einer Client-Server-Verbindung Kommunizieren.
Die Serveranwendung soll nun aber auf einem Linux-Rechner laufen.
Ich habe auch schon fast alles hinbekommen:
Der Client sucht den Server, findet ihn und baut eine Verbindung auf, dann werden Daten gesendet...
das wars!
Normalerweise soll nun eine Reaktion kommen, die kommt aber nie an. Ich habe meinem Router die neuen Portregeln gegeben, die Firewall auf dem Linux-System eingerichtet und es nur soweit hin bekommen, dass sich das Clientprogramm mit dem Server verbindet, dieser aber nichts zurücksenden kann.
Gibt es dafür noch mehr einzustellen in der Firewall???
Ein Webserver läuft auch auf der Maschine und ist aus dem Internet erreichbar. Anhand der Einstellungen habe ich auch die Firewall für dieses Programm eingereichtet.
Gruß Scoty
Also wenn du verbinden kannst dann ists mit der Firewall normalerweise ok.
ABER ich tippe jetzt mal ganz einfach spontan drauf dass du nicht lange genug auf daten wartest bis diese auch tatsächlich übermittlet worden sind !
Sprich: Wenn du ein "Paket" sendest muss dieses nicht unbedingt in einem Stück bei deinem server oder client ankommen. Sprich jedes empfangene byte vom socket in einen buffer schreiben bis das paket komplett ist und DANN deinen Buffer zusammenbauen und abarbeiten.
Benutzt du die standard PB Data events und wartest auf einen solchen ?
Cheers, Thalius
ABER ich tippe jetzt mal ganz einfach spontan drauf dass du nicht lange genug auf daten wartest bis diese auch tatsächlich übermittlet worden sind !
Sprich: Wenn du ein "Paket" sendest muss dieses nicht unbedingt in einem Stück bei deinem server oder client ankommen. Sprich jedes empfangene byte vom socket in einen buffer schreiben bis das paket komplett ist und DANN deinen Buffer zusammenbauen und abarbeiten.
Benutzt du die standard PB Data events und wartest auf einen solchen ?
Cheers, Thalius
"...smoking hash-tables until until you run out of memory." :P
Re: Server / Client
@scoty: funktionieren denn bei Dir die Server-/Client-Beispielcodes, die in
der PB-Hilfe vorhanden sind?
Grüße ... Kiffi
der PB-Hilfe vorhanden sind?
Grüße ... Kiffi
a²+b²=mc²
Ich habe immer noch nicht das Beispiel getestet, aber ich gebe nun den String in die Konsole aus, der empfangen werden sollte.
Ich habe mich mit Putty mit meinem Server(Rechner) verbunden. Da wollte ich nun sehen, was der Server(Software) an Daten empfängt.
Der Datenmüll verursacht sogar ein umbenennen des Putty-Fensters!!!
Liegt das an String Windows != String Linux??????????????
Ich habe mich mit Putty mit meinem Server(Rechner) verbunden. Da wollte ich nun sehen, was der Server(Software) an Daten empfängt.
Der Datenmüll verursacht sogar ein umbenennen des Putty-Fensters!!!
Liegt das an String Windows != String Linux??????????????
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Das liegt an Deinem Code, den bisher keiner gesehen hat. Strings könnenscoty hat geschrieben:Liegt das an String Windows != String Linux??????????????
ja nur als Data gelesen werden, nicht als String, also hast Du auch für die
richtige Aufbereitung zu sorgen. Sendest Du die länge? Wartest Du ab, bis
die entsprechende Anzahl Zeichen (Bytes) da ist? Soll ich die Glaskugel
rausholen?
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Auf der Windowsseite sende ich den String mit SendNetworkString().
Auf der Linuxseite empfange ich die Daten mit receiveNetworkData().
Dann kommt PeekS()
Da diesr Befehl bis zu einem Nullzeichen liest, habe natürlich keine Länge mit übertragen. Da wollte ich es mir einfach machen und beim Senden auf SendNetworkString() zurückgreifen.
[/code]
Auf der Linuxseite empfange ich die Daten mit receiveNetworkData().
Dann kommt PeekS()
Da diesr Befehl bis zu einem Nullzeichen liest, habe natürlich keine Länge mit übertragen. Da wollte ich es mir einfach machen und beim Senden auf SendNetworkString() zurückgreifen.
[/code]
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
> Da diesr Befehl bis zu einem Nullzeichen liest
Es wird aber kein Nullzeichen gesendet von SendNetworkString, Du hast
also einen Buffer anzulegen, der mindestens 1 Char grösser als der zu
erwartende String ist!
Besser wäre es, Du machst Dir ein kleines Protokoll für Deine Zwecke, wo
Du länge usw. bestimmst. Es sollten hier eigentlich genug Beispiele zu finden
sein, ansonsten wirste nicht drumrum kommen einen Code zu posten, wo
dieser Fehler auftritt.
Es wird aber kein Nullzeichen gesendet von SendNetworkString, Du hast
also einen Buffer anzulegen, der mindestens 1 Char grösser als der zu
erwartende String ist!
Besser wäre es, Du machst Dir ein kleines Protokoll für Deine Zwecke, wo
Du länge usw. bestimmst. Es sollten hier eigentlich genug Beispiele zu finden
sein, ansonsten wirste nicht drumrum kommen einen Code zu posten, wo
dieser Fehler auftritt.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Aha!
Unter Windows hatte es geklappt, dann gehe ich jetzt mal davon aus, dass bei AllocateMemory() unter windows der Speicher mit Nullen initialisiert wird und es darum geklappt hat. Unter Linux ist es dann so, dass nichts initialisiert wird???
Das wer ich jetzt mal untersuchen und mich dann nochmal melden.
Unter Windows hatte es geklappt, dann gehe ich jetzt mal davon aus, dass bei AllocateMemory() unter windows der Speicher mit Nullen initialisiert wird und es darum geklappt hat. Unter Linux ist es dann so, dass nichts initialisiert wird???
Das wer ich jetzt mal untersuchen und mich dann nochmal melden.