Client - Server Verständigungsproblem

  • 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
    [autoit]


    $text = @IPAddress1 & "#" & $macadresse & "#" & @ComputerName

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Empfaenger_IP = "192.169.1.32"
    $Port = 33891

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    TCPStartUp()

    [/autoit] [autoit][/autoit] [autoit]

    $ConnectedSocket = TCPConnect($Empfaenger_IP, $Port)
    TCPSend($ConnectedSocket, $text)
    Sleep(1000)
    TCPShutdown ()

    [/autoit]


    Server

    Spoiler anzeigen
    [autoit]

    While 1
    TCPStartup()
    $MainSocket = TCPListen(@IPAddress1, 33891, 100 )

    [/autoit] [autoit][/autoit] [autoit]

    Do
    $ConnectedSocket = TCPAccept($MainSocket)
    Until $ConnectedSocket <> -1

    [/autoit] [autoit][/autoit] [autoit]

    If $ConnectedSocket <> -1 Then
    $recv = TCPRecv($ConnectedSocket, 2048)
    MsgBox(0,"",$recv)
    EndIF
    TCPShutdown()
    WEnd

    [/autoit]

    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?

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • zwischen connect und send sollte auch ein sleep sein.


    falls du das nur zu pasß machst ist es oke so aber wenn du einen chat schreiben willst würde ich nicht die daten einfach so übertragen sondern ich würde wenn der socket connectet ist den server antworten lassen damit der client weiß die verbindung ist dan und das senden funktioniert


    EDIT:


    was sucht TCPshutdown in der schliefe?


    wird sie einmal ausgeführ geht nix mehr


    EDIT: OK hab es zum laufen gebracht schu dir die scripts genau und und wenn du fragen hast stelle sie

    2 Mal editiert, zuletzt von Matthias_199 (15. Juli 2009 um 13:16)

  • was sucht TCPshutdown in der schliefe?


    wird sie einmal ausgeführ geht nix mehr


    EDIT: OK hab es zum laufen gebracht schu dir die scripts genau und und wenn du fragen hast stelle sie

    Soll ja auch nur einmal ausgeführt werden ;).

    Ok danke werde ich gleich mal testen.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.