Netzwerk GetClientPort(ClientID)

Anfängerfragen zum Programmieren mit PureBasic.
es_91
Beiträge: 410
Registriert: 25.01.2011 04:48

Re: Netzwerk GetClientPort(ClientID)

Beitrag von es_91 »

Ich möchte noch einmal auf das
ursprüngliche Thema zurückkommen. Warum zeigt GetClientPort() einen
anderen als den für die Verbindung gewählten Port an? Das war des
Thread-Erstellers erste Frage.

Server:

Code: Alles auswählen

initnetwork()
createnetworkserver(#pb_any, 6060)
repeat
  select networkserverevent()
    case #pb_networkevent_connect
        debug getclientport(eventclient())
        sendnetworkstring(eventclient(), "Hallo")
  endselect
forever
Klient:

Code: Alles auswählen

initnetwork()
connection = opennetworkconnection("127.0.0.1", 6060)
repeat
until networkclientevent(connection) = #pb_networkevent_data
Benutzeravatar
Sicro
Beiträge: 963
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Netzwerk GetClientPort(ClientID)

Beitrag von Sicro »

Hallo H.Brill,

bezüglich dem Problem des unvollständigem Senden/Empfangen von Daten wurde schon mehrfach diskutiert. Lies dir mal folgenden Thread komplett durch: noch ein daten senden problem
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
es_91
Beiträge: 410
Registriert: 25.01.2011 04:48

Re: Netzwerk GetClientPort(ClientID)

Beitrag von es_91 »

Ich habe jetzt auf die ursprüngliche Frage im englischen Forum eine Antwort erhalten. Es heisst dort, es gäbe im TCP/IP Protokoll immer zwei Ports, einen auf der Klient- und einen auf der Serverseite und während PureBasic es erlaubt, den Serverport zu setzen, ist der klientseitige Port ein automatisch und wahrscheinlich zufällig zugewiesener, der nicht verändert werden kann.

Mfg,

es_91.
Kevin
Beiträge: 236
Registriert: 11.06.2007 12:55

Re: Netzwerk GetClientPort(ClientID)

Beitrag von Kevin »

es_91 hat geschrieben:... während PureBasic es erlaubt, den Serverport zu setzen, ist der klientseitige Port ein automatisch und wahrscheinlich zufällig zugewiesener, der nicht verändert werden kann ....
seit 5.1 gibt es einen optionalen LocalPort Parameter:

OpenNetworkConnection(ServerName$, Port [, Mode [, TimeOut [, LocalIP$ [, LocalPort]]]])
Help hat geschrieben:LokalerPort (optional) Der lokale Port, an den die Verbindung gebunden werden soll. Standardmäßig wird automatisch ein zufälliger lokaler Port für die neue Verbindung gewählt, aber er kann mit diesem Parameter überschrieben werden.
mfg kevin
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Netzwerk GetClientPort(ClientID)

Beitrag von NicTheQuick »

Bei einer direkten Verbindungen zwischen zwei Rechnern über ein einfaches Switch oder Hub, sind üblicherweise die Ports von Server und Client gleich. Aber steckt man z.B. hinter einem Router, kann der jeden eingehenden Datenstrom über einen Port A zu einem beliebigen Port B leiten und umgekehrt. Zum Beispiel kann ich hier meinen lokalen Webserver auf dem Rechner auf Port 80 laufen lassen, aber im Internet über meine DynDNS-Adresse kommt man eben über Port 1234 rein, weil der Router das so macht.
Antworten