TCP/IP client soll senden und empfangen

  • Howdy leutz,

    aller anfang ist schwer und ich habe mich mal durch die funktionsbeschreibungen von TCPStartup, send & co gelesen und versuche mich grade wie weit ich komme.

    der server läuft, empfängt auch das vom client gesendete, nur soll der client auch vom server empfangen können.

    vorweg, ich benutze

    [autoit]

    While 1

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

    WEnd

    [/autoit]

    dazu möchte ich übrigends gern wissen wie ich eine verbindung aufrecht erhalten kann.
    eine paar tipps zum basteln einer funktion zum zählen der verbindungen wär auch nicht schlecht da ich das gefühl hab das der rückgabewert von TCPAccept nicht die anzahl der verbindungen ist^^

    ich hoffe ich habe mein problem recht verständlich erklärt und hoffe das die reaktion der profis eher bei einem diskreten schmunzeln bleibt ;D

    mfg
    sgtigram

    Einmal editiert, zuletzt von SgtIgram (22. Dezember 2011 um 17:41)

  • Zum Zählen würde ich ein Array benutzen in dem alle aktiven Clients vorhanden sind (Zum gucken ob ein Client noch "aktiv" ist einfach versuchen "" zu senden, wenn es nicht klappt dann wurde das Sokcet getrennt)
    Eine Verbindung bleibt solange aufrecht bis das Socket geschlossen wird. Das geschieht über

    [autoit]

    TCPCloseSocket()

    [/autoit]

    oder indem das Programm beendet wird.

    Ein kleiner Tipp: Es gibt sehr viele Server/Client Beispiele hier im Forum und auch in der Hilfe

    Gruß

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

  • hab mir die TCP.au3 von Kip mal vorgenommen und funktionierte soweit auch ganz gut.
    jedenfalls bis ich das an verschiedenen rechner probiert habt. ich nehme an das es irgendein firewall problem gibt.

    bevor jetzt die standart antworten kommen:
    JA ich habe den port an meinem router freigegeben(für den richtigen pc, den richtigen port, das richtige protokoll(tcp))

    JA ich habe an meinem pc die firewall deaktiviert und es gibt definitiv keine zweite

    JA der server läuft einwandfrei und lauscht den port ab(kontrolliert mit TCPView)

    ich bekomme es zwar hin das eine verbindung aufgebaut wird, aber es können keinerleidaten gesendet werden.

    wenn ich das ganze innerhalb eines rechner probiere klappt es.

    die ip adressen hab ich natürlich entsprechend angepasst und es wird ja schließlich auch eine verbindung hergestellt..

    mfg
    sgtigram

  • Servous , ja in der UDF von Kip scheinen Fehler drin zu sein wurde mir auch schon gesagt habe aber noch nicht die Zeit gehabt dies genauer unter die Lupe zu nehmen.. müsste man mal schauen woran es liegt dass sobald man mehrfach sich verbindet oder die Verbindung schließt gibts einen schoenen Error^^ :D

    Gruß Marvin

  • Servous , ja in der UDF von Kip scheinen Fehler drin zu sein wurde mir auch schon gesagt habe aber noch nicht die Zeit gehabt dies genauer unter die Lupe zu nehmen.. müsste man mal schauen woran es liegt dass sobald man mehrfach sich verbindet oder die Verbindung schließt gibts einen schoenen Error^^ :D

    Gruß Marvin


    also was ich festgestellt habe ist das ein error rausgehauen wird sobald mehrere clienten gleichzeitig disconnecten weil dann das array mit den clienten-sockets leer is...

    es wäre ja vlt möglich das seine UDF davon ausgeht das die pakete von der verbindung her sofort gesendet werden können und nicht durch höhere pings oda so etwas verzögert auftauchen könnten

    P.S.:
    mir ist aufgefallen das die UDF nicht mit domainnamen umgehen kann weshalb man sie mit

    [autoit]

    TCPStartup()
    $serverIp = TCPNameToIP($serverDomain)
    TCPShutdown()

    [/autoit]

    erst umwandeln lassen muss was z.b. der fall sein könnte wenn man eine dynamische DNS(heißt das so?^^) benutzt^^

  • problem gelöst:

    man muss ausdrücklich darauf achten das das script auf den verbindungsaufbau wartet.
    also einfach ne hübsche warteschleife rein ;D dann klappt das auch alles

    werd mir das ne lehre sein lassen^^

    mfg
    sgtigram