Ich bin zwar noch am testen, aber ich poste schon mal was in der Hoffnung mir kann dazu schon mal jemand was sagen um meine Denkprozesse zu beschleunigen

Erstmal der Code:
Code: Alles auswählen
;
; ------------------------------------------------------------
;
; PureBasic - Network (Server) example file
;
; (c) 2003 - Fantaisie Software
;
; ------------------------------------------------------------
;
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
Global go1.b
Procedure proc_ThreadFuerServerUeberwachung(plcebo)
port = 6832
Buffer = AllocateMemory(1000)
If CreateNetworkServer(0, port)
go1 = 1
; MessageRequester("PureBasic - Server", "Server created (Port "+Str(port)+").", 0)
Repeat
SEvent = NetworkServerEvent()
If SEvent
ClientID = EventClient()
Select SEvent
Case 1
;MessageRequester("PureBasic - Server", "A new client has connected !", 0)
Debug "neuer Client: "+Str(ClientID)
Case 2
MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" has send a packet !", 0)
ReceiveNetworkData(ClientID, Buffer, 1000)
MessageRequester("Info", "String: "+PeekS(Buffer), 0)
Case 3
MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" has send a file via the network !", 0)
ReceiveNetworkFile(ClientID, "C:\TEST_Network.ftp3")
Case 4
;MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" has closed the connexion...", 0)
;Quit = 1
Debug "Client getrennt: "+Str(ClientID)
EndSelect
EndIf
Delay(100)
Until Quit = 1
;MessageRequester("PureBasic - Server", "Click to quit the server.", 0)
CloseNetworkServer(0)
Else
MessageRequester("Error", "Can't create the server (port in use ?).", 0)
EndIf
EndProcedure
Debug "thread erstellen mit Sever"
CreateThread(@proc_ThreadFuerServerUeberwachung(), 0)
Debug "warte auf Server"
Repeat
Delay(1)
Until go1 = 1
Debug "Verbindungen werden aufgebaut"
port = 6832
While a.l < 600*10
a = a+1
If a < 50
ConnectionID = OpenNetworkConnection("127.0.0.1", port)
If ConnectionID
;MessageRequester("PureBasic - Client", "Client connected to server...", 0)
;SendNetworkString(ConnectionID, "An hello from a client !!! :-)")
;MessageRequester("PureBasic - Client", "A string has been sent to the server, please check it before quit...", 0)
CloseNetworkConnection(ConnectionID)
Else
MessageRequester("PureBasic - Client", "Can't find the server (Is it launched ?).", 0)
EndIf
EndIf
Delay(10)
Wend
End
Nun ist es so, das ich das Problem mit dem beigelegten PB-Democode auch bekomme, ich mußte ihn natürlich anpassen.
Es wird in einem Thread der Server erstellt und abgeschragt, im Hauptcode werden dann Verbindungen aufgebaut und beendet.
Der Server hat ein größeres Delay(), was verzögerungen bei Volllast oder Bearbeitungsschritte simulieren soll. Nun wird nach und nach eine Verbindung aufgebaut und sofort danch beendet, aber es werden NUR die Verbindungsaufbauten vom Server erkannnt, die Trennungen aber erst, sobald es keine neuen Verbindungen mehr gibt. Es scheint so, als ob nicht erst das "älteste" Event abgearbeitet wird, sondern das letzte bzw. vorrangig die Aufbauten. Warum ist das so? Ist das ein Fehler? Wie sieht es mit den ClientID`S und Sockets aus, wenn eine Verbindung getrennt wird aber noch nicht vom Programm erkannt wird, nun aber einen neue aufgebaut wird, kann diese dann nicht das selbe Socket erhalten bzw. die ID wie eine Vorherige Verbindung!? Dann kommen natürlich zwangsläufig alle Datenbankeinträge durcheinander. Ich werde hier langsam etwas verrückt. Gibt es denn keine Möglichkeit PB "anzuweisen", das zwischendurch auch mal die "Verbindungstrennungen" ausgegeben werden. BEi mir könnte es schon von der Theorie her passieren, das Stundenlang keine einzige Trennung verarbeitet werden kann.
Ach ja, mit Debugger laufen lassen, getestet mit Unicode und Threadsafe beim kompelieren.
Gruß
Toshy
2007
[edit d=07012007 h=1207]
Hier noch mal die Debugausgabe. Man sieht was passiert. 50 Clientaufrufe und immer das selbe. Selbst bei 200 Aufrufen das selbe.
- thread erstellen mit Sever
warte auf Server
Verbindungen werden aufgebaut
neuer Client: 3875040
neuer Client: 3875072
neuer Client: 3875104
neuer Client: 3875136
neuer Client: 3875168
neuer Client: 3875200
neuer Client: 3875232
neuer Client: 3875264
neuer Client: 3875296
neuer Client: 3875328
neuer Client: 3875360
neuer Client: 3875392
neuer Client: 3875424
neuer Client: 3875456
neuer Client: 3875488
neuer Client: 3875520
neuer Client: 3875552
neuer Client: 3875584
neuer Client: 3875616
neuer Client: 3875648
neuer Client: 3875680
neuer Client: 3875712
neuer Client: 3875744
neuer Client: 3875776
neuer Client: 3875808
neuer Client: 3875840
neuer Client: 3875872
neuer Client: 3875904
neuer Client: 3875936
neuer Client: 3875968
neuer Client: 3876000
neuer Client: 3876032
neuer Client: 3876064
neuer Client: 3876096
neuer Client: 3876128
neuer Client: 3876160
neuer Client: 3876192
neuer Client: 3876224
neuer Client: 3876256
neuer Client: 3876288
neuer Client: 3876320
neuer Client: 3876352
neuer Client: 3876384
neuer Client: 3876416
neuer Client: 3876448
neuer Client: 3876480
neuer Client: 3876512
neuer Client: 3876544
neuer Client: 3876576
Client getrennt: 3876576
Client getrennt: 3876544
Client getrennt: 3876512
Client getrennt: 3876480
Client getrennt: 3876448
Client getrennt: 3876416
Client getrennt: 3876384
Client getrennt: 3876352
Client getrennt: 3876320
Client getrennt: 3876288
Client getrennt: 3876256
Client getrennt: 3876224
Client getrennt: 3876192
Client getrennt: 3876160
Client getrennt: 3876128
Client getrennt: 3876096
Client getrennt: 3876064
Client getrennt: 3876032
Client getrennt: 3876000
Client getrennt: 3875968
Client getrennt: 3875936
Client getrennt: 3875904
Client getrennt: 3875872
Client getrennt: 3875840
Client getrennt: 3875808
Client getrennt: 3875776
Client getrennt: 3875744
Client getrennt: 3875712
Client getrennt: 3875680
Client getrennt: 3875648
Client getrennt: 3875616
Client getrennt: 3875584
Client getrennt: 3875552
Client getrennt: 3875520
Client getrennt: 3875488
Client getrennt: 3875456
Client getrennt: 3875424
Client getrennt: 3875392
Client getrennt: 3875360
Client getrennt: 3875328
Client getrennt: 3875296
Client getrennt: 3875264
Client getrennt: 3875232
Client getrennt: 3875200
Client getrennt: 3875168
Client getrennt: 3875136
Client getrennt: 3875104
Client getrennt: 3875072
Client getrennt: 3875040