Server / Client

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
scoty
Beiträge: 64
Registriert: 18.10.2005 16:43
Wohnort: Raum Hildesheim

Server / Client

Beitrag von scoty »

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
Benutzeravatar
Thalius
Beiträge: 476
Registriert: 17.02.2005 16:17
Wohnort: Basel / Schweiz

Beitrag von Thalius »

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
"...smoking hash-tables until until you run out of memory." :P
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Server / Client

Beitrag von Kiffi »

@scoty: funktionieren denn bei Dir die Server-/Client-Beispielcodes, die in
der PB-Hilfe vorhanden sind?

Grüße ... Kiffi
a²+b²=mc²
scoty
Beiträge: 64
Registriert: 18.10.2005 16:43
Wohnort: Raum Hildesheim

Beitrag von scoty »

Ich benutze die Standardevents und warte, so denke, ich bei über 5 Minuten lange genug.

Wo liegt denn ein Problem mit den Standardevents?

Die Beispiele habe ich noch nicht getestet.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

scoty hat geschrieben:Die Beispiele habe ich noch nicht getestet.
würde ich machen. Damit kannst Du ermitteln, ob der Fehler in Deinem
Code oder in Deiner Konfiguration zu suchen ist. ;-)

Grüße ... Kiffi
a²+b²=mc²
scoty
Beiträge: 64
Registriert: 18.10.2005 16:43
Wohnort: Raum Hildesheim

Beitrag von scoty »

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??????????????
Benutzeravatar
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

Beitrag von ts-soft »

scoty hat geschrieben:Liegt das an String Windows != String Linux??????????????
Das liegt an Deinem Code, den bisher keiner gesehen hat. Strings können
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.
Bild
scoty
Beiträge: 64
Registriert: 18.10.2005 16:43
Wohnort: Raum Hildesheim

Beitrag von scoty »

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]
Benutzeravatar
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

Beitrag von ts-soft »

> 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.
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.
Bild
scoty
Beiträge: 64
Registriert: 18.10.2005 16:43
Wohnort: Raum Hildesheim

Beitrag von scoty »

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.
Antworten