TCPListen Problem

  • Erst mal Source :D:

    Server

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Server", 170, 208, 193, 125)
    $InIP_GUI = GUICtrlCreateInput("", 40, 8, 121, 21)
    $InPORT_GUI = GUICtrlCreateInput("", 40, 32, 121, 21)
    GUICtrlCreateLabel("IP:", 8, 8, 17, 17)
    GUICtrlCreateLabel("Port:", 8, 32, 26, 17)
    $BuVerbinden_GUI = GUICtrlCreateButton("Verbinden", 32, 64, 99, 25, 0)
    $Edit1 = GUICtrlCreateEdit("", 8, 96, 153, 105)
    GUICtrlSetData(-1, "")
    GUISetState(@SW_SHOW)
    #endregion ### START Koda GUI section ### Form=

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $BuVerbinden_GUI
    _verbinden()
    EndSwitch
    WEnd

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

    Func _verbinden()
    TCPStartup()
    $ClientIP = GUICtrlRead($InIP_GUI) ;@IPAddress1
    $Port = GUICtrlRead($InPORT_GUI) ;33891
    $MainSocket = TCPListen($ClientIP, $Port)
    If $MainSocket = -1 Then
    MsgBox(0, "ERROR", "ERROR")
    Exit
    EndIf
    $ConnectedSocket = -1
    Do
    TrayTip("Hinweis", "Warte auf akk.", 1)
    $ConnectedSocket = TCPAccept($MainSocket)
    $nMsg2 = GUIGetMsg()
    If $nMsg2 = $GUI_EVENT_CLOSE Then
    Exit
    EndIf
    Until $ConnectedSocket <> -1
    While 1
    TrayTip("Hinweis", "verbunden...", 1)
    $nMsg2 = GUIGetMsg()
    If $nMsg2 = $GUI_EVENT_CLOSE Then
    ExitLoop
    EndIf
    $Daten = TCPRecv($ConnectedSocket, 2048)
    If @error Then
    ExitLoop
    EndIf
    If $Daten <> "" Then
    GUICtrlSetData($Edit1, "" & $Daten & "" & @CRLF & "",1)
    EndIf
    WEnd
    TrayTip("Hinweis","Verbindung beendet",1)
    If $ConnectedSocket <> -1 Then
    TCPCloseSocket($ConnectedSocket)
    TCPShutdown()
    EndIf
    EndFunc ;==>_verbinden

    [/autoit]


    Client

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    #region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\Martin\Desktop\TCP_CLIENT.kxf
    $Form1 = GUICreate("Client", 170, 159, 193, 125)
    $InIP_GUI = GUICtrlCreateInput("", 40, 8, 121, 21)
    $InPORT_GUI = GUICtrlCreateInput("", 40, 32, 121, 21)
    GUICtrlCreateLabel("IP:", 8, 8, 17, 17)
    GUICtrlCreateLabel("Port:", 8, 32, 26, 17)
    $BuVerbinden_GUI = GUICtrlCreateButton("Verbinden", 32, 64, 99, 25, 0)
    $InText_GUI = GUICtrlCreateInput("", 8, 104, 153, 21)
    $BuSenden_GUI = GUICtrlCreateButton("Senden", 32, 128, 99, 25, 0)
    GUISetState(@SW_SHOW)
    #endregion ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\Martin\Desktop\TCP_CLIENT.kxf

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $BuVerbinden_GUI
    _verbinden()
    Case $BuSenden_GUI
    MsgBox(0, "ERROR", "ERROR")
    EndSwitch
    WEnd

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

    Func _verbinden()
    TCPStartup()
    $ServerIP = GUICtrlRead($InIP_GUI) ;TCPNameToIP(@IPAddress1)
    $Port = GUICtrlRead($InPORT_GUI) ;33891
    $ConnectedSocket = TCPConnect($ServerIP, $Port)
    If @error Then
    MsgBox(0, "ERROR", "ERROR")
    Else
    TrayTip("Hinweis", "verbunden...", 1)
    While 1
    $nMsg2 = GUIGetMsg()
    If $nMsg2 = $BuSenden_GUI Then
    $Daten = GUICtrlRead($InText_GUI)
    If @error Or $Daten = "" Then
    ExitLoop
    Else
    TCPSend($ConnectedSocket, $Daten)
    GUICtrlSetData($InText_GUI,"")
    EndIf
    ElseIf $nMsg2 = $GUI_EVENT_CLOSE Then
    ExitLoop
    EndIf
    WEnd
    EndIf
    EndFunc ;==>_verbinden

    [/autoit]

    So das ganze funzt folgender Massen:
    1.) Beide machen sich einen port aus, und geben sich gegenseitig die IP
    2.) Der Server Mann gibt alles ein und drückt auf verbinden
    3.) Der Client Freund gibt dan auch alles ein und drückt auf verbinden
    Jetzt kann der client mann sein text senden^^

    Nicht wundern warum das so komisch gemacht ist usw., da es nur ein Test ist.

    Mein Problem:
    1.) wenn ich jetzt als IP 127.0.0.1 und den Port 6522 nehme funzt es einwandfrei (localhost....)
    2.) Aber wenn ich das jetzt mit jemand anderes machen will, hat der Server Error. wegen der IP :/ (also das TCPListen errort :| )

  • Hallo

    Meinst du mit anderer IP eine IP in deinem Netzwerk? Oder meist du eine WAN IP also z.B. die eines komplett anderen Netzwerkes?

    Mfg Spider

    Eine IP von jemand anderen, der ka sonst wo ist xD auf jeden Fall isser nicht in meinen Netzwerk :D


    Hi,

    es gibt doch schon so viele Bsp für CS warum willst du das Rad neu schreiben :D

    Mega

    Um es besser zu verstehen :P

    Einmal editiert, zuletzt von TheLol (18. Juli 2008 um 20:26)