Hallo,
ich habe folgendes Problem undzwar sendet mein Server nichts an meinem Clienten. Ich benutzte Dyndns.
Ich hoffe ihr könnt mir helfen
hier ist der Server:
Spoiler anzeigen
#include <date.au3>
; Starten von TCP
TCPStartup()
$serverIP = @IPAddress1 ; normalerweise die IP des Servers
$serverport = 33891
$srvSocket = TCPListen($serverIP,$serverport)
[/autoit] [autoit][/autoit] [autoit]#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Server Kontrolle", 625, 443, 700, 50)
$Edit1 = GUICtrlCreateEdit("", 16, 16, 593, 417)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$con = TCPAccept($srvSocket)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
If $con >=0 Then
$rev = ''
$clientIP = SocketToIP($con)
ConsoleWrite(@LF & $clientIP)
While True
$rev &= TCPRecv($con,2048)
If @error Then ExitLoop
WEnd
If StringLeft($rev,8) = 'MSGPORT#' Then
$sp = StringSplit($rev,'#')
$cltSocket = TCPConnect($clientIP,$sp[UBound($sp) - 1])
If $clientIP <> -1 Then
TCPSend($cltSocket,GUICtrlRead($Edit1))
TCPCloseSocket($cltSocket)
EndIf
ElseIf $rev <> '' Then
$str = GUICtrlRead($Edit1)
$str &=_Now() & @TAB & $rev & @CRLF
GUICtrlSetData($Edit1,$str)
EndIf
EndIf
Sleep(50)
WEnd
; Funktion um die IP Adresse eines verbundenen Sockets wiederzugeben.
;----------------------------------------------------------------------
Func SocketToIP($SHOCKET)
Local $sockaddr, $aRet
$sockaddr = DllStructCreate("short;ushort;uint;char[8]")
[/autoit] [autoit][/autoit] [autoit]$aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
"ptr", DllStructGetPtr($sockaddr), "int*", DllStructGetSize($sockaddr))
If Not @error And $aRet[0] = 0 Then
$aRet = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($sockaddr, 3))
If Not @error Then $aRet = $aRet[0]
Else
$aRet = 0
EndIf
$sockaddr = 0
[/autoit] [autoit][/autoit] [autoit]Return $aRet
EndFunc ;==>SocketToIP
Und dann noch der Client
Spoiler anzeigen
$ip = @IPAddress1 ; normalerweise @IPAddress1
$port = 7661
$serverport = 33891
[/autoit] [autoit][/autoit] [autoit]; Starten von TCP
TCPStartup()
$serverIP = TCPNameToIP("autoitpokemon.dyndns.org") ; normalerweise die IP des Servers
AdlibRegister('empfang',5000)
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Chat Client 1", 625, 336, 10, 10)
$Edit1 = GUICtrlCreateEdit("", 16, 16, 601, 281, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_READONLY, $ES_WANTRETURN, $WS_HSCROLL, $WS_VSCROLL))
;GUICtrlSetData(-1, "Edit1")
$Input1 = GUICtrlCreateInput("", 24, 304, 497, 21)
$Button1 = GUICtrlCreateButton("Senden", 528, 304, 89, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
$mySocket = TCPListen($ip,$port)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While 1
$con = TCPAccept($mySocket)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
; Sitzung aufbauen
$srvSocket = TCPConnect($serverIP, $serverport)
; Bei einem Fehler Skript beenden
If $srvSocket = -1 Then Exit
; Daten senden
TCPSend($srvSocket, GUICtrlRead($Input1))
; Sitzung schliessen
TCPCloseSocket($srvSocket)
empfang()
EndSwitch
If $con >=0 Then
$rev = ''
While True
$rev &= TCPRecv($con,2048)
If @error Then ExitLoop
WEnd
If $rev <> '' Then
$str = $rev
GUICtrlSetData($Edit1,$str)
EndIf
EndIf
Sleep(50)
WEnd
[/autoit] [autoit][/autoit] [autoit]Func empfang()
AdlibUnRegister()
$srvSocket = TCPConnect($serverIP, $serverport)
; Bei einem Fehler Skript beenden
If $srvSocket = -1 Then Exit
; Daten senden
TCPSend($srvSocket, 'MSGPORT#' & $port)
; Sitzung schliessen
TCPCloseSocket($srvSocket)
AdlibRegister('empfang',5000)
EndFunc
; Beenden von TCP
TCPShutdown()
Mfg
blacky94