ich habe ein kleines netzwerkprogramm geschrieben, also einen server und einen client. wenn der client connectet, dann nutiert der server sich die daten. wenn jetzt allerdings der client dem server eine nachricht mit hilfe von "SendNetworkData" schickt, und der server die nachricht anguckt, dann bekommt der server sie immer wieder, egal ob der client schon aus ist oder nicht. der server bekommt ohne unterbrechung immer wieder diese nachricht:( was muss ich tun, damit der die nur einmal empfängt? zur hilfe stelle ich den code rein:
InitNetwork()
Structure user
an.d
clientip.d
text.s
clientname.s
nummer.d
EndStructure
buffer = AllocateMemory(300)
Dim user.user(100)
verbindung = CreateNetworkServer(0 ,1000,#PB_Network_TCP)
If verbindung >0
ergebnis = 0
Repeat
Ergebnis = NetworkServerEvent()
Client = EventClient()
If ergebnis > 0
client = GetClientIP(Client)
weiter = 0
If ergebnis = 1
For i = 0 To 100
If weiter = 0
If user(i)\an = 0
user(i)\clientip =client
user(i)\an = 1
Debug(user(i)\clientip)
weiter = 1
EndIf
EndIf
Next i
EndIf
If ergebnis = 2
Debug ("juhuu es wurde etwas geschickt...")
Debug (client)
ReceiveNetworkData(client, Buffer, 300)
EndIf
EndIf
Until esc = 1
CloseNetworkServer(0)
EndIf
..aber prüfe, ob dein Buffer gültig ist und die rueckgabe von receiveNetWorkData(), bzw nutze das @.
wenn dein receiveNetWorkData() nämlich fehlschlägt, bleiben in jeden durchgang daten zum empfang übrig ..nämlich alle! es wird dann für immer versucht sie erneut zu empfangen.
Zuletzt geändert von #NULL am 14.10.2006 08:22, insgesamt 1-mal geändert.
Auf NetworkServerEvent() richtig reagieren. Siehe mal in der Hilfe nach.
0 : Nichts ist passiert
#PB_NetworkEvent_Connect : Ein neuer Client wurde mit dem Server verbunden
#PB_NetworkEvent_Data : Roh-Daten wurden empfangen (können mittels ReceiveNetworkData() gelesen werden)
#PB_NetworkEvent_File : Eine Datei wurde empfangen (kann mittels ReceiveNetworkFile() gelesen werden)
#PB_NetworkEvent_Disconnect: Ein Client hat den Server verlassen (Verbindungstrennung)
jetzt habe ich aber noch ein problem: der server soll dem client jetzt eine mitteilung schicken "connected" ich habe mir gedacht, das der server jetzt den befehl SendNetworkData benutzt und als verbindung GetClientIP allerdings bekommt der client nix nichtmal eine leere mitteilung muss ich anstatt GetClientIP einen anderen befehl nutzen?
wenn du die rueckgabe werte mal checken würdest (immer, und wenn was nich geht erst recht), würdest du merken, dass SendNetworkData() vermutlich fehlschlägt. daraufhin guckst du in die hilfe. und dort liest du dann.. stimmt, die hilfe ist hier unklar.
du brauchst die ClientID, die kriegst du mit EventClient() nach einem #PB_NetworkEvent_Connect.
mist es geht immer noch nicht also ich habe 3 nummern
einmal
16777343.0 <--- GetClientIP(Client) und das ergebnis in double gepackt
16777343 <--- getclientip(client) und das ergebnis in fload
3743383.0 <--- EventClient() in double
3743383 <--- EventClient() in fload
welches davon ist jetzt richtig? ich habe alles getest was geht aber der sendet nix