SendNetworkString via IPv6 UDP

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
AndyMars
Beiträge: 141
Registriert: 08.09.2004 11:59
Computerausstattung: Win11 Prof 64bit, i5-13500 @ 4.8 GHz, 32GB RAM, Nvidia RTX 4070 TI
Wohnort: Zürich, Schweiz
Kontaktdaten:

SendNetworkString via IPv6 UDP

Beitrag von AndyMars »

Hallo miteinander

Ich experimentiere gerade etwas mit den Netzwerkfunktionen von PureBasic. Jetzt habe ich ein Verhalten, dass ich nicht verstehe: Wenn ich den Code unten mal mit IPv4 und mal mit IPv6 ausführe, bekomme ich nicht dieselben Ergebnisse - kann mir das jemand erklären?

Die Debug Ausgabe mit IPv4:

Code: Alles auswählen

6
Send to localhost:21
Die Debug Ausgabe mit IPv6:

Code: Alles auswählen

-1
Send_FAIL to localhost:21

Code: Alles auswählen

If InitNetwork()
	port=21
	Server$="localhost"
	text$="Hallo!"
	;ConnectionID = OpenNetworkConnection(Server$,port,#PB_Network_IPv4|#PB_Network_UDP)
	ConnectionID = OpenNetworkConnection(Server$,port,#PB_Network_IPv6|#PB_Network_UDP)
	If ConnectionID
		AnzByte=SendNetworkString(ConnectionID, text$)
		Debug AnzByte
		If AnzByte>0
			Debug "Send to "+Server$+":"+Str(port)
		Else
			Debug "Send_FAIL to "+Server$+":"+Str(port)
		EndIf
		CloseNetworkConnection(ConnectionID)
	Else
		Debug "Connect_FAIL to "+Server$+":"+Str(port)
		Debug WSAGetLastError_()
	EndIf
EndIf
Btw: Ich habe das mit PB 5.24 LTS 32&64bit und PB 5.31 32bit unter Windows 7 64bit versucht.

Grüsse euch
Andy

Edit 25.3.15: marschner.ch durch localhost ersetzt, um weniger zu verwirren
Edit 16.3.WSAGetLastError_()
Zuletzt geändert von AndyMars am 26.03.2015 11:24, insgesamt 2-mal geändert.
Andesdaf
Moderator
Beiträge: 2671
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: SendNetworkString via IPv6 UDP

Beitrag von Andesdaf »

blöde Frage: wird IPv6 bei dir überhaupt unterstützt?
Win11 x64 | PB 6.20
Benutzeravatar
AndyMars
Beiträge: 141
Registriert: 08.09.2004 11:59
Computerausstattung: Win11 Prof 64bit, i5-13500 @ 4.8 GHz, 32GB RAM, Nvidia RTX 4070 TI
Wohnort: Zürich, Schweiz
Kontaktdaten:

Re: SendNetworkString via IPv6 UDP

Beitrag von AndyMars »

Andesdaf hat geschrieben:blöde Frage: wird IPv6 bei dir überhaupt unterstützt?
Es gibt keine blöde Fragen ;). Ja, wird es (Win 7, da ist es standard mässig an und sollte nicht abgeschaltet werden) - auf IPv6 und TCP funktioniert das ganze auch, ebenso mit IPv4 und UDP. Ich hab sicherheitshalber auch einmal die Windows-Firewall deaktiviert... es bleibt sich gleich. Bei TCP brauche ich natürlich einen Server, der die Verbindung annimmt, bevor ich ein SendNetworkString machen kann.
Mit der compilierten EXE hab ich dasselbe auch schon auf anderen Rechnern festgestellt (Win7, Win8)
Benutzeravatar
Tommy
Spassvogel
Beiträge: 319
Registriert: 17.10.2013 14:36

Re: SendNetworkString via IPv6 UDP

Beitrag von Tommy »

Liefert dein Provider eine IPv6-Addresse?
Was sagt wieistmeineip.de dazu?
PB 5.41 x64
Andreas21
Beiträge: 390
Registriert: 30.08.2004 09:05
Computerausstattung: Desktop
Windows 10 Pro x64
CPU: AMD Ryzen 5 2600 3.40 GHz
Ram: 16GB RAM
Grafik: NVIDA Geforce 1060
PB: 5.72 X86/X64
Wohnort: Heidelberg

Re: SendNetworkString via IPv6 UDP

Beitrag von Andreas21 »

Bei mir geht es auch nicht unter Windows und ich habe eine IPV6 Adresse.
Ihre IP-Adresse lautet: 78.42.XX.XXX
Ihre IPv6-Adresse lautet: 2A02:xxxx:1B1:xxxx:5D80:xxxx:659A:xxxx
Ihre System-Informationen:Windows 7 Chrome 41.0 Deutschland
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32
Benutzeravatar
Imhotheb
Beiträge: 192
Registriert: 10.10.2014 13:14
Computerausstattung: Intel 8086, 640 KB RAM, Hercules Video Adapter, 2 x 5 1/4" 360kb Floppy, MS-DOS 3
Wohnort: Wolfenbüttel

Re: SendNetworkString via IPv6 UDP

Beitrag von Imhotheb »

Wird auch von deinem Gateway (FritzBox, Speedport etc.) eine lokale IPv6 zugewiesen? unterstützt der DNS IPv6?
oder wählst du dich direkt am Rechner ein?

klappt ein Ping mit IPv6?
weil einfach einfach einfach ist ... mach' ich es anders
Benutzeravatar
AndyMars
Beiträge: 141
Registriert: 08.09.2004 11:59
Computerausstattung: Win11 Prof 64bit, i5-13500 @ 4.8 GHz, 32GB RAM, Nvidia RTX 4070 TI
Wohnort: Zürich, Schweiz
Kontaktdaten:

Re: SendNetworkString via IPv6 UDP

Beitrag von AndyMars »

Ah, vielleicht war es etwas ungeschickt, eine Internet-Adresse in dem Beispiel zu verwenden :). Eigentlich spielt sich das Ganze lokal ab... entweder auf localhost oder zu einem virtuellen Rechner in einer VirtualBox. Da habe ich auch durchaus einen Serverteil. Aber da UDP ja ein verbindungsloses Protokoll ist, spielt es meiner Meinung nach keine Rolle, ob da nun ein Server ist oder nicht... und um den Code möglichst simpel zu halten, lasse ich den Server hier deshalb auch weg.

Dass mein IPv6-Netzwerk funktioniert, erachte ich als erwiesen, da ich mit IPv6 TCP problemlos Daten versenden kann. In diesem Fall mit dem zugehörigen Server, da ich ohne den ja keine Connection öffnen könnte - und da kommen die Daten übrigens auch an (...ebenso mit IPv4 UDP). Ping geht im Übrigen auch...

Im Fall von IPv4 UDP macht die Funktion SendNetworkString() ja auch ohne Server genau das, was ich von ihr erwarten würde, sie sendet die Daten einfach - der Rückgabewert: die Anzahl der gesendeter Bytes (bzw. wie ich glaube, Zeichen, denn der Rückgabewert ist auch bei Unicode derselbe).
Unter IPv6 UDP müsste ich doch mit dem sonst identischen Code genau dasselbe Ergebnis erhalten - da liefert die Funktion aber -1 - was ich als Fehler interpretiere, obwohl das in der Hilfe so nicht dokumentiert ist: "Gibt die Anzahl an gesendeten Bytes zurück." ...aber da ist ein negativer Wert unsinnig... Btw.: dasselbe Verhalten lässt sich auch mit SendNetworkData() beobachten...

Sieht irgend jemand einen Fehler in meinen Überlegungen...?

PS: Hab grad noch gemerkt, das unter SendNetworkData() folgendes in der Hilfe steht:
Wenn nichts gesendet werden konnte, dann ist das Ergebnis gleich -1.
Vermutlich bedeutet es bei SendNetworkString() dasselbe.

Aber warum sendet der Befehl die Daten nicht? Ich kapiere es nicht...
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: SendNetworkString via IPv6 UDP

Beitrag von HeX0R »

Was sagt den WSAGetLastError_() bei Dir? Auch 10014, also WSAEFAULT?
Dann würde ich vermuten, da ist ein Bug in PB.
Man sollte es mal mit API nachbauen.
Benutzeravatar
AndyMars
Beiträge: 141
Registriert: 08.09.2004 11:59
Computerausstattung: Win11 Prof 64bit, i5-13500 @ 4.8 GHz, 32GB RAM, Nvidia RTX 4070 TI
Wohnort: Zürich, Schweiz
Kontaktdaten:

Re: SendNetworkString via IPv6 UDP

Beitrag von AndyMars »

Jawohl, ich bekomme auch 10014 von WSAGetLastError_().

Edit: Aber ich glaube nicht, dass ich das mit API hinbekomme...
Benutzeravatar
mback2k
Beiträge: 9
Registriert: 15.11.2008 14:04
Wohnort: Germany

Re: SendNetworkString via IPv6 UDP

Beitrag von mback2k »

Da der Fehler auch mit SendNetworkData weiterhin auftritt, habe ich ihn mal im englischen Forum gemeldet:
http://purebasic.fr/english/viewtopic.php?f=4&t=66878
Antworten