Hallo,
habe vor etwas längere Zeit schon einmal das Problem gepostet, das bei TCPSend nicht immer die Daten beim TCPRecv ankahmen. Wurde mit dann gesagt das ich eine sleep einbauen soll. Sieht also aktuell so aus:
Client
Spoiler anzeigen
$text = @IPAddress1 & "#" & $macadresse & "#" & @ComputerName
$Empfaenger_IP = "192.169.1.32"
$Port = 33891
TCPStartUp()
[/autoit] [autoit][/autoit] [autoit]$ConnectedSocket = TCPConnect($Empfaenger_IP, $Port)
TCPSend($ConnectedSocket, $text)
Sleep(1000)
TCPShutdown ()
Server
Spoiler anzeigen
While 1
TCPStartup()
$MainSocket = TCPListen(@IPAddress1, 33891, 100 )
Do
$ConnectedSocket = TCPAccept($MainSocket)
Until $ConnectedSocket <> -1
If $ConnectedSocket <> -1 Then
$recv = TCPRecv($ConnectedSocket, 2048)
MsgBox(0,"",$recv)
EndIF
TCPShutdown()
WEnd
Problem ist nun allerdings das nach wie vor nicht immer die Daten ankommen und $recv öffters einfach leer ist. Das Problem ist auch bei erhöhter sleep im Client.
Dachte mir nun ich könnte ja es ja so machen das der Client so lange die Daten an den Server sendet bis er von diesem eine Antwort bekommt. Theorie gut die Praxis aber nicht, da meistens dann die Antwort vom Server dann meist in der Zeit kahm in der sleep ausgeführt wurde und damit eine nachfolgende TCPRecv im Client die Antwort nicht mitbekommen hat.
Gibt nicht iregendwie eine andere Möglichkeit um sicher zu gehen, dass der Server auch wirklich die Daten erhalten hat?