Als erstes natürlich der "Fehler".
Danach müssen wir schauen, ob da jemand besser als ich das ins Englische übersetzten kann.
Vorschlag:
1. ReceiveNetworkData()
Im deutschen Forum unter
http://www.purebasic.fr/german/viewtopi ... 18#p302218
http://www.purebasic.fr/german/viewtopi ... =3&t=20870
http://www.purebasic.fr/german/viewtopi ... &start=120
weißen wir auf ein Jahre altes Problem hin, daß noch immer nicht geklärt wurde.
Code: Alles auswählen
; server
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
Port = 6832
If CreateNetworkServer(0, Port)
Repeat
SEvent = NetworkServerEvent()
If SEvent
ClientID = EventClient()
Select SEvent
Case #PB_NetworkEvent_Connect
MessageRequester("PureBasic - Server", "A new client has connected !", 0)
EndSelect
EndIf
Until Quit = 1
CloseNetworkServer(0)
Else
MessageRequester("Error", "Can't create the server (port in use ?).", 0)
EndIf
End
Code: Alles auswählen
; client
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
Port = 6832
Repeat
ConnectionID = OpenNetworkConnection("127.0.0.1", Port)
Delay(1000)
Until ConnectionID > 0
If ConnectionID
*DatenPuffer = AllocateMemory(100)
Ergebnis = ReceiveNetworkData(ConnectionID, *DatenPuffer, 10) ; without received data programm wait forever
MessageRequester("PureBasic - Client", "", 0)
CloseNetworkConnection(ConnectionID)
Else
MessageRequester("PureBasic - Client", "Can't find the server (Is it launched ?).", 0)
EndIf
End
Die Hilfedatei ist entweder falsch oder die Funktion.
2. IPv6
In der Hilfe steht das man eine Verbindung per TCP aufbauen kann. Klappt dies auch mit IPv6? Falls ja, wie kann man die IP auslesen bzw. wann wird das endlich in PB eingearbeitet? Falls nein, wann kommt es endlich? IPv6 wird wird benötigt. Selbst das alte Windows XP unterstützt ja schon IPv6 seit langem.
3. Wie von vielen Programmierern in allen Sprachen fehlen viele zusätzliche "Parameter" bei den Netzwerkfunktionen. PB macht es einem schön einfach bei Netzwerkdingen, das ist super und so für viele einfacher und schneller zu handhaben. Aber Dinge wie das binden eines Servers an eine bestimmte IP / Netzwerkkarte wären echt wichtig.
4. DisconnectEvent
Warum gibt es in PB beim Clienten kein DisconnectEvent? Soweit ich das erlesen habe, gibt es das an sich. Auf jeden Fall gibt es einen "Zusatzcode" von purefan und dark(player) der genau dies erledigt. Wann erledigt das PB
5. Bei neuen bzw. erweiterten Netzwerkfunktionen und Parametern sollte die Community kurz nach Wünschen befragt werden. So wäre es da PB eigene ConnectionIDs verwendet sicher sinnvoll, das man diesen per Funktion / Befehl Daten zuordnen kann. Am besten je Verbindung ein einziger Pointer, der dann auf auf die eigenen Daten zur Verbindung zeigt. Dann braucht man nicht mal mehr eine eigene Verbindungsverwaltung für die IDs.
6. Allgemein und Zusammenfassend:
Ich bin dankbar für die einfach zu handhabenden Netzwerkfunktionen, aber wie es aussieht, wurde an denen seit 2005 nichts mehr drann gemacht. Nicht nur ich emfinde es als dringend, dich als aller nächstes diese Lib vorzunehmen. Vor allem aber wäre ich da sehr dankbar.
Lieber Gruß
Toshy
So, noch mal an Stargate und Andre und alle Anderen:
Mit der Übersetzung ins Englische bin ich überfordert. Kann ich englisch noch lückehaft etwas lesen (viel interpretieren und nicht wirklich verstehen), so klappt das mit dem sprechen oder schreiben gar nicht. Da ich es recht kurz gefaßt habe, kann das im Englischen natürlich auch in eigenen Worten geschrieben werden. Ist ja nur ein Entwurf.