Hilfe bei Chatprog

  • hi
    ich hab ein Chat Proggram geschrieben
    nur ich hab 3 probleme
    1. die Disconect Func geht bei dem server noch nicht
    2. wenn ich die Globale ip benutze kann ich nicht zu server Conecten
    3. der Autoscorll beim client ($text) geht nicht

    Mein Server:

    Spoiler anzeigen
    [autoit]

    HotKeySet("{Esc}","Ende")

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

    $ip=@IPAddress1 ;<--- Local
    $ip1=TCPNameToIP("thebmg.ath.cx") ;<--- Global

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

    Global $max_zeichen=9999
    Global $index[16]

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

    TCPStartup()
    $tcp=TCPListen($ip,27039)

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

    While 1
    $acc=TCPAccept($tcp)
    If $acc<>-1 Then
    $conid=Conect($acc)
    If $conid<>-1 Then
    TCPSend($index[$conid],"Accept")
    Else
    TCPSend($acc,"Full")
    EndIf
    $acc=-1
    EndIf ;<-- Neuer Client

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

    For $i= 0 To UBound($index)-1
    If $index[$i]<>"" Then
    $rec=TCPRecv($index[$i],$max_zeichen)
    If $rec<>"" And $rec<>"Disconect" Then
    For $j= 0 To UBound($index)-1
    If $index[$j]<>"" Then TCPSend($index[$j],$rec)
    Next
    ElseIf $rec="Disconect" Then
    DisConect($index[$i])
    EndIf
    EndIf
    Next ;<-- Text senden/epfamgen
    WEnd

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

    Func Conect($con)
    For $i= 0 to UBound($index)-1
    If $index[$i]="" Then
    $index[$i]=$con
    Return $i
    EndIf
    Next
    Return -1
    EndFunc

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

    Func DisConect($con)
    For $i=0 To UBound($index)-1
    If $index[$i]=$con Then
    $index[$i]=""
    Return 1
    EndIf
    Next
    EndFunc

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

    Func Ende ()
    Exit
    EndFunc

    [/autoit]

    Mein Client

    Spoiler anzeigen
    [autoit]

    #Include <Date.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $ip=@IPAddress1 ;<--- Local
    $ip1=TCPNameToIP("thebmg.ath.cx") ;<--- Global

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

    TCPStartup()
    $con=TCPConnect($ip,27039)
    If $con = -1 Then
    MsgBox(16, "Error", "Es ist bei dem Verbindungsversuch ein Fehler aufgetreten"&@LF&"vermutlich ist der Server nicht online!")
    Exit
    EndIf

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

    Do
    $rec=TCPRecv($con,10)
    Until $rec<>""
    If $rec="Full" Then
    MsgBox(16,"Chat","Der Server ist voll"&@LF&"bitte versuchen sie es später nochein Mal")
    Exit
    EndIf

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

    Do
    $name=InputBox("Chat","Bitte namen eingeben","Test")
    If @error=1 Then Ende()
    If @error>0 Then MsgBox(0,"Chat","Bitte einen Namen eingeben")
    Until $name <>""

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

    GUICreate("Chat", 507, 364, 192, 125)
    $text = GUICtrlCreateEdit("", 5, 5, 490, 245, BitOR($ES_READONLY,$ES_WANTRETURN, $WS_VSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL))
    GUICtrlSetBkColor($text,0xFFFFFF)
    $send = GUICtrlCreateEdit("", 5, 252, 400, 108)
    $go = GUICtrlCreateButton("Senden", 410, 270, 90, 30, $WS_GROUP)
    $ex = GUICtrlCreateButton("Exit", 410, 318, 90, 30, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    TCPSend($con,"### "&$name&" hat sich im Chat angemeldet ###")
    Dim $hotkey[1][2]=[["{Enter}",$go]]
    GUISetAccelerators($hotkey)

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

    While 1
    $msg=GUIGetMsg()
    If $msg=$go Then Senden()
    If $msg=$ex Then ende()
    If $msg=-3 Then ende()
    $rec=TCPRecv($con,9999)
    If $rec<>"" Then GUICtrlSetData($text,GUICtrlRead($text)&$rec&@CRLF)

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

    WEnd

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

    Func Senden()
    If GUICtrlRead($send)<>"" Then
    TCPSend($con,"["&$name&" "&@HOUR&":"&@MIN&"]: "&GUICtrlRead($send))
    GUICtrlSetData($send,"")
    Else
    MsgBox(0,"Chat","Kein Text eingegeben")
    EndIf
    EndFunc

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

    Func ende()
    TCPSend($con,"### "&$name&" hat den Chatt verlassen ###")
    TCPSend($con,"Disconect")
    Exit
    EndFunc

    [/autoit]


    kann mir wer helfen

    Edit1: Neue Frage/Nerer Script

    3 Mal editiert, zuletzt von HansWurrst (10. Juni 2009 um 17:01)

  • Also der 2. Fehler liegt wahrscheinlich daran, dass du den Port im Router nicht freigegeben hast.

    Auch dieser Ausschnitt ist irgendwie komisch da Disconnect zweimal vorkommt. :D

    [autoit]

    If $rec<>"" And $rec<>"Disconect" Then
    For $j= 0 To UBound($index)-1
    If $index[$j]<>"" Then TCPSend($index[$j],$rec)
    Next
    ElseIf $rec="Disconect" Then
    DisConect($index[$i])
    EndIf

    [/autoit]

    Auch würde ich mal die Rechtschreibung beachten: Connect, Disconnected, ... :P

    MfG
    Conan (Nur Mitlesend)
    Schon lange dabei

  • ich weis das ich nicht gut schreiben kann
    aber das is egal

    wenn ich

    [autoit]

    If $rec<>"" Then

    [/autoit]

    schreiben würde
    sendet er das Disconect an die Clienten zurück

    und bei was müsste ich den port freigeben
    bei weiterleitung, öffnung oder umleitung