Hallo
ich hab ein Problem. Und zwar hat ein User ein Chatscript geschrieben so ziemlich basis. Er kam mit TCP nicht weiter und hat dann mit FTP angefangen. Aber ich hab ihn ein wenig starthilfe gegeben damit er sein TCP-Script weiter aufbaut. Allerdings komm ich bei eine stelle selbst nicht weiter. Also ich habe 2x das gleiche Code.. nur das bei zweite Code kein TCPListen() befindet damit Server nicht nochmal gestartet wird was so oder so wegen Ports nicht geht. Auf jedenfall frage ich mich, wenn ein Client der sich zum Server connected die Daten, was nach Server gesendet wird wie ich das wieder zu Client senden kann?. Da Client kein TCPListen() anwendet kann man doch nichts zu Client senden oder? Oder muss Client auch ein TCPListen anwenden?? Aber was mache ich wenn man jetzt ein Client sein Programm 3x startet..? Die Ports freigeben?
Also ich habe eigentlich wie Spiele gedacht. Jeder verbindet sich zum Server.. die Clients müssen keine Portsfreigeben, kein listen. Quasi wenn man Porttest macht ist dieser Port zu.
Zweite frage wär. Wie kriege ich hin das Server nicht nur nach ein Client wartet sondern das mehrere sich da einklinken können
also
[autoit]
Do
$tcpaccept = TCPAccept($tcplisten)
Until $tcpaccept <> -1
Ohne das Funktioniert bei mir gar nichts.
Hier mal Code
Spoiler anzeigen
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Chat", 429, 292, 192, 124)
$Edit1 = GUICtrlCreateEdit("", 8, 8, 409, 201, BitOR($ES_AUTOVSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_VSCROLL))
$Input1 = GUICtrlCreateInput("", 8, 224, 97, 21, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
GUICtrlSetLimit(-1, 26)
$Label1 = GUICtrlCreateLabel(":", 112, 224, 7, 17)
$Input2 = GUICtrlCreateInput("", 120, 224, 297, 21)
$Button1 = GUICtrlCreateButton("Namen ändern", 8, 256, 75, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Senden", 96, 256, 75, 25, $WS_GROUP)
$Button3 = GUICtrlCreateButton("Schriftart", 344, 256, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
;Vari
[/autoit] [autoit][/autoit] [autoit]TCPStartup()
$tcplisten = TCPListen("127.0.0.1", 3000,100)
$tcpconnect = TCPConnect("127.0.0.1", 3000)
$tcpaccept = -1
Do
$tcpaccept = TCPAccept($tcplisten)
Until $tcpaccept <> -1
While 1
_Server()
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
TCPShutdown()
Exit
Case $Button1
Case $Button2
_send(GUICtrlRead($Input2))
Case $Button3
EndSwitch
sleep(10)
WEnd
func _Server()
$s_Recv = TCPRecv($tcpaccept, 2048)
IF $s_Recv <> "" Then
Local $s_Chatverlauf = GUICtrlRead($Edit1)
GUICtrlSetData($Edit1, $s_Chatverlauf & @CRLF & "MaZy" & " : " & $s_Recv)
EndIf
EndFunc
func _send($s_message)
If $s_message = "" Then
MsgBox(0, "Fehler", "Nichts wurde als Text eingetragen!")
Return 0
EndIf
TCPSend($tcpconnect, $s_message)
EndFunc
Also das ist die Version Server und Client in eins. Client version zum Testen nur hab ich _server() und tcplisten() usw entfernt.
Ich hoffe könnt mir beim logisches denken helfen
EDIT: IN Sufu hab ich nur gefunden das man sufu benutzen soll wenn es um chat ging lol
Außer 2 beiträge wo jemand sein Script postet aber bei ihn blick ich total nicht durch..