tcp über Internet

  • hallo jetz wird der ein oder andere bestimmt sagen...ach da gibts doch tausende threads für..nein leider nicht sonst wäre meiner nicht da

    also ist mir schon klar dass ich portfreigabe machen muss (bin ja nich doof)
    aber wenn ich für ip bei server und client nur GetIP() mache reicht das nicht, also das skript beendet sich

    muss ich dahinter evtl noch @ipadress oder so machen?

  • Es gibt tausende andere Threads zu dem Thema, hab doch selbst welche davon erstellt
    und in einigen anderen geantwortet..

    [ offen ] Chat Clienten bauen

    TCP... über Internet?

    innerhalb von <1min gefunden. ;)

    Jedesmal, wenn jemand eine TCP-Verbindung übers Inet herstellen will, geht die Erklärbär-Nummer
    von vorne los..
    Ich glaube, es liegt daran, dass die Forumsuche eine Mindestanzahl an Zeichen hat ^^
    Also nur "tcp" findet man wirklich nichts..
    Versuchs mal mit "Internet", "Verbindung", "Ports", "Forwarding",
    oder suche dann einfach direkt nach den Befehlen, also "TCPConnect" etc, da kommt man oft schon
    auf die richtigen Seiten. :)

    limette

    PS
    Um dir wirklich konkret helfen zu können solltest du zumindest deine bisherigen Versuche posten..
    Wobei "also das skript beendet sich" eigentlich nicht nach Verbindungsfehler aussieht.
    Es sei denn du hängst da noch mit den Beispielscripten, die sich auf @error beenden.
    Ausführliche Fehleranalyse ist immer ratsam.

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.

  • oke danke..problem ist nur (habs grad eben probiert) dass es nicht einmal im Lan funktioniert...

    in welchem Skript muss ich denn welche Ip eintragen?
    Client:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <Inet.au3>
    Opt('MustDeclareVars', 1)
    ; Richte einige wiederverwendbare Informationen ein.
    ;--------------------------
    Local $ConnectedSocket, $szData
    ; set $szIPADDRESS to wherever the SERVER is. We will change a PC name into an IP Address
    ; Local $szServerPC = @ComputerName
    ; Local $szIPADDRESS = TCPNameToIP($szServerPC)
    Local $szIPADDRESS = "192.168.178.28"
    Local $nPORT = 33891,$recv
    _TCPStart()

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


    ; Fragt fortwährend nach Daten, die zum Server gesendet werden sollen.
    While 1

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

    ; InputBox für die zu versendenden Daten
    $szData = InputBox("Daten für den Server", @LF & @LF & "Gib Daten ein, die zum Server transferiert werden sollen:")

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

    ; Wenn die Inputbox geschlossen wird oder leer bleibt, wird die Schleife beendet.
    If @error Or $szData = "" Then ExitLoop

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

    ; Wir sollten Daten in $szData haben... Lasst uns versuchen, sie durch unseren verbundenen Socket zu versenden.
    TCPSend($ConnectedSocket, $szData) ; Wenn das Senden mit @error fehlgeschlagen ist, dann ist der Socket getrennt.
    sleep(1)
    $recv = TcpRecv($ConnectedSocket,4096)
    if StringLeft($recv, 4) = "time" Then
    MsgBox(0, "", "zeit : "& StringMid($recv, 5))
    EndIf
    if StringLeft($recv, 4) = "date" Then
    MsgBox(0, "", "Datum: "& StringMid($recv, 5))
    EndIf
    if StringLeft($recv, 4) = "name" Then
    MsgBox(0, "", "PC Name: "& StringMid($recv, 5))
    EndIf


    ;----------------------------------------------------------------
    If @error Then ExitLoop
    WEnd

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

    Func _TCPStart()
    ; Startet den TCP Service
    ;==============================================
    TCPStartup()

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

    ; Initialisiert eine Variable, um eine Verbindung anzugeben.
    ;==============================================
    Dim $ConnectedSocket = -1

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

    ; Versucht, zu einem Server mit der IP und dem PORT 33891 zu verbinden.
    ;=======================================================
    $ConnectedSocket = TCPConnect($szIPADDRESS, $nPORT)

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

    ; Falls es einen Fehler gibt, wird er angezeigt
    If @error Then
    _TCPStart()
    sleep(100)
    EndIf
    EndFunc

    [/autoit]

    Server:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <Date.au3>
    #include <Inet.au3>
    Opt('MustDeclareVars', 1)

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

    ; Richte einige wiederverwendbare Informationen ein.
    ; Richte deine öffentliche IP Adresse (@IPAddress1) hier ein.
    ; Local $szServerPC = @ComputerName
    ; Local $szIPADDRESS = TCPNameToIP($szServerPC)
    Local $szIPADDRESS = "192.168.178.28"
    Local $nPORT = 33891
    Local $MainSocket, $GOOEY, $edit, $ConnectedSocket, $szIP_Accepted
    Local $msg, $recv

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

    ; Startet den TCP Service
    ;==============================================
    TCPStartup()

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

    ; Erstellt einen lauschenden Port.
    ; Benutzt deine IP Adresse und den Port 33891. (Oben angegeben)
    ;==============================================
    $MainSocket = TCPListen($szIPADDRESS, $nPORT)

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

    ; Wenn die Socketerstellung fehl schlägt, dann wird das Programm beendet.
    If $MainSocket = -1 Then Exit

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

    ; Eröffnet eine Variable um eine Verbindung anzugeben
    ;==============================================
    $ConnectedSocket = -1

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

    ; Wartet auf und akzeptiert eine Verbindung
    ;==============================================
    Do
    $ConnectedSocket = TCPAccept($MainSocket)
    Until $ConnectedSocket <> -1

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

    ; Bekommt die IP des verbundenen Clients

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

    ; GUI Message Schleife
    ;==============================================
    While 1

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

    ; Versucht Daten zu empfangen, bis zu 2048 bytes
    ;----------------------------------------------------------------
    $recv = TCPRecv($ConnectedSocket, 2048)

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

    ; Wenn der Empfang mit @error fehlschlägt, dann ist der Socket getrennt.
    ;----------------------------------------------------------------
    If @error Then ExitLoop

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

    ; Erneuert das Edit Steuerelement mit dem, was wir empfangen haben.
    ;----------------------------------------------------------------
    If $recv = "time" Then
    TcpSend($ConnectedSocket,"time"&_NowTime())
    ConsoleWrite($recv&@crlf)
    EndIf
    If $recv = "date" Then
    TcpSend($ConnectedSocket,"date"&_NowDate())
    ConsoleWrite($recv&@crlf)
    EndIf
    If $recv = "name" Then
    TcpSend($ConnectedSocket,"name"&@UserName)
    ConsoleWrite($recv&@crlf)
    EndIf
    WEnd

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

    If $ConnectedSocket <> -1 Then TCPCloseSocket($ConnectedSocket)

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

    TCPShutdown()

    [/autoit]

    Info Client läuft auf meinem Rechner 192.168.178.28
    Server auf anderem (192.168.178.24)

  • aber wenn ich den server bei meinem bruder seinen pc laufen lasse und dort die ip des clienten also meinen pc drinne hab beendet sich das Skript bei ihm sofort (ohne error)

    • Offizieller Beitrag

    Wenn Du das Serverscript auf dem Rechner von Deinem Bruder laufen lässt, musst Du dort die IP von dem Rechner Deines Bruders eintragen.
    Es wäre vielleicht ganz hilfreich, wenn Du Dich erstmal mit ein paar Netzwerk-Grundlagen beschäftigst. Man sollte den zweiten Schritt nicht vor dem Ersten machen.
    Ein Baby fängt (meistens) auch erst an zu krabbeln und dann zu laufen. (Ging mir gerade so durch den Kopf. ^^ )

  • ^^ja ich hab aber meine kleinen problemchen mit netzwerk...
    wir beide haben unterschiedliche ips...sind mit wlan zu einer fritzbox verbunden..
    ich hab vista ulimate er xp professional...bekomme den ja nicht einmal unter netzwerk zu sehen...so ein dreck..
    mit hamachi könnte ich es höchstens noch probieren