Hi Community,
ich bin gerade dabei an einem Chat (über TCP) zu arbeiten. Der Chat soll über das Internet laufen und nicht nur im Heimnetzwerk funktionen.
Der Client soll dem Server etwas schicken können, jedoch liefert der Server direkt den WSA-Fehler: 10049. Ich verwende die öffentliche IP -> _GetIP() im Server. Im Client muss der Partner die IP in die Inputbox eingeben.
Server:
Spoiler anzeigen
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <INet.au3>
$Form1 = GUICreate("Console", 378, 58, 193, 125)
$Label1 = GUICtrlCreateLabel("Connected:", 8, 8, 59, 17)
$LabelConnected = GUICtrlCreateLabel("0", 72, 8, 10, 17)
$Input1 = GUICtrlCreateInput("", 8, 32, 281, 21)
$Button1 = GUICtrlCreateButton("Senden", 294, 30, 73, 25, $BS_DEFPUSHBUTTON)
GUISetState(@SW_SHOW)
$IP = _GetIP()
If @error Then
MsgBox(16, "Fehler", "Fehler!")
Else
MsgBox(16, "IP", $IP)
EndIf
;ClipPut($IP)
$iRValue = TCPStartup()
If $iRValue = 0 Then
MsgBox(16, "Fehler", "Der Dienst kann nicht gestartet werden!" & @CRLF & "Fehlercode: 0x" & @error & " - " & @ScriptLineNumber)
EndIf
$MainSocket = TCPListen($IP, 80)
If $MainSocket = -1 Then
MsgBox(16,"",@error)
Exit
Else
MsgBox(16, "", "!")
EndIf
While 1
$ConnectedSocket = TCPAccept($MainSocket)
If $ConnectedSocket >= 0 Then
MsgBox(0, "", "Client verbunden")
GUICtrlSetData($LabelConnected, "1")
ExitLoop
EndIf
WEnd
While 1
$recv = TCPRecv($ConnectedSocket, 2048)
If $recv <> "" And Not @error Then
MsgBox(16, "Nachricht", $recv)
EndIf
WEnd
Client:
Spoiler anzeigen
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $ConnectedSocket = -1
Global $szData
Global $IPADDRESS = @IPAddress1
Global $PORT = 80
$IP = InputBox("IP","Bitte geben Sie die IP des Servers ein: ")
If Not @error and $IP <> "" Then
$IPADDRESS = $IP
Else
MsgBox(16,"Fehler","Es ist ein Fehler aufgetreten! Das Programm wird beendet.")
Exit
EndIf
$Form1 = GUICreate("Console", 378, 34, 193, 125)
$Input_Senden = GUICtrlCreateInput("", 8, 8, 281, 21)
$Button_Senden = GUICtrlCreateButton("Senden", 294, 6, 73, 25, $BS_DEFPUSHBUTTON)
GUISetState(@SW_SHOW)
$iRValue = TCPStartup()
If $iRValue = 0 Then
MsgBox(16, "Fehler", "Der Dienst kann nicht gestartet werden!" & @CRLF & "Fehlercode: 0x" & @error & " - " & @ScriptLineNumber)
Exit
Else
;MsgBox(48, "Info", "Der Dienst ist gestartet !")
EndIf
$ConnectedSocket = TCPConnect($IPADDRESS, $PORT)
[/autoit] [autoit][/autoit] [autoit]If @error Then
MsgBox(4112, "Fehler", "Fehler in Zeile: " & @ScriptLineNumber & " @error: " & @error)
Exit
EndIf
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button_Senden
$RecData = GUICtrlRead($Input_Senden)
If $RecData <> "" Then TCPSend($ConnectedSocket, $RecData)
EndSwitch
WEnd
Vielen Dank schonmal ...
Jautois