Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Chat Programm über TCP

Mitglied: BOBO927

BOBO927 (Level 1) - Jetzt verbinden

08.11.2012, aktualisiert 21:12 Uhr, 4553 Aufrufe, 6 Kommentare

Moin,

ich habe ein kleines Chatprogramm mit AutoIt geschrieben. Das eigentliche Problem ist allerdings nicht das Programm selber sondern der Verbindungsaufbau. Ich habe das Ganze mal über 127.0.0.1 ausprobiert und das hat wunderbar funktioniert, sowie ich aber die öffentliche IP nehme schlägt der Verbindungsaufbau fehl. Wie und wo muss ich da jetzt Ports freigeben damit mein Server funktioniert?

Quellcode Server:
01.
;===< Server >============================================= 
02.
 
03.
;===< Variablen >========================================== 
04.
 
05.
#include <Inet.au3> 
06.
 
07.
Opt("TCPTimeout",1000) 
08.
 
09.
$ipadress = _GetIP() 
10.
$port = "54321" 
11.
$maxuser = 100 
12.
For $num = 1 To $maxuser 
13.
   Assign("socket"&$num,-1) 
14.
Next 
15.
 
16.
;===< Start >============================================== 
17.
 
18.
;===< TCP starten und Socke erstellen >==================== 
19.
 
20.
TCPStartup() 
21.
$mainsocket = TCPListen($ipadress,$port,$maxuser) 
22.
 
23.
;===< GUI erstellen >====================================== 
24.
 
25.
GUICreate("Server",120,100) 
26.
   GUICtrlCreateLabel($ipadress,1,1,118,68) 
27.
   $button = GUICtrlCreateButton("Beenden",1,71,118,28) 
28.
GUISetState() 
29.
 
30.
;===< Aktionen ausführen >================================= 
31.
 
32.
Do 
33.
 
34.
;===< Verbindungen annehmen >============================== 
35.
 
36.
   For $num = 1 To $maxuser 
37.
	  If Eval("socket"&$num) > -1 Then 
38.
		 ContinueLoop 
39.
	  Else 
40.
		 $socket = TCPAccept($mainsocket) 
41.
		 Assign("socket"&$num,$socket) 
42.
		 ExitLoop 
43.
	  EndIf 
44.
   Next 
45.
 
46.
;===< Nachrichten weiterleiten >=========================== 
47.
 
48.
   For $num1 = 1 To $maxuser 
49.
	  $recv = TCPRecv(Eval("socket"&$num1),2048) 
50.
	  If $recv <> "" Then 
51.
		 For $num2 = 1 To $maxuser 
52.
			$send = TCPSend(Eval("socket"&$num2),$recv) 
53.
			If @error Then 
54.
			   Assign("socket"&$num2,-1) 
55.
			EndIf 
56.
		 Next 
57.
	  Else 
58.
		 ContinueLoop 
59.
	  EndIf 
60.
   Next 
61.
 
62.
;===< GUI überprüfen und beenden >========================= 
63.
 
64.
   $msg = GUIGetMsg() 
65.
Until $msg = $button 
66.
 
67.
GUIDelete() 
68.
TCPCloseSocket($mainsocket) 
69.
TCPShutdown() 
70.
 
71.
;===< Ende >===============================================
Quellcode Client:
01.
;===< Client >============================================= 
02.
 
03.
;===< Variablen >========================================== 
04.
 
05.
#include <GUIConstantsEx.au3> 
06.
 
07.
Opt("TCPTimeout",1000) 
08.
 
09.
$ipadress = InputBox("","Server-IP eingeben:","XXX.XXX.XXX.XXX") 
10.
$port = "54321" 
11.
$name = InputBox("","Name eingeben:") 
12.
 
13.
;===< Start >============================================== 
14.
 
15.
;===< TCP starten und Verbindung herstellen >============== 
16.
 
17.
TCPStartup() 
18.
$mainsocket = TCPConnect($ipadress,"54321") 
19.
 
20.
For $try = 1 To 10 
21.
   If $mainsocket > 0 Then 
22.
	  $data = "Verbunden mit: "&$ipadress 
23.
   Else 
24.
	  If $try < 10 Then ContinueLoop 
25.
	  MsgBox(0,"Fehler","Es konnte keine Verbindung hergestellt werden") 
26.
	  Exit 
27.
   EndIf 
28.
Next 
29.
 
30.
;===< GUI erstellen >====================================== 
31.
 
32.
GUICreate("Chatprogramm",500,500) 
33.
   $display = GUICtrlCreateEdit($data,0,0,500,470) 
34.
   $input = GUICtrlCreateInput("",0,470,450,30) 
35.
   $button = GUICtrlCreateButton("Senden",450,470,50,30) 
36.
GUISetState() 
37.
 
38.
;===< Aktionen ausführen >================================= 
39.
 
40.
Do 
41.
   $msg = GUIGetMsg() 
42.
 
43.
;===< Nachricht senden >=================================== 
44.
 
45.
   If $msg = $button Then 
46.
	  TCPSend($mainsocket,$name&": "&GUICtrlRead($input)) 
47.
   EndIf 
48.
 
49.
;===< Nachrichten empfangen >============================== 
50.
 
51.
   $recv = TCPRecv($mainsocket,2048) 
52.
   If $recv <> "" Then 
53.
	  $data = $data&@CRLF&$recv 
54.
	  GUICtrlSetData($display,$data) 
55.
   EndIf 
56.
 
57.
Until $msg = $GUI_Event_Close 
58.
 
59.
;===< Ende >===============================================
Also der Server setzt die IP automatisch und der Client muss eine IP angeben zu der die Verbindung hergestellt werden soll.

ServerIP = 127.0.0.1 und Client gibt 127.0.0.1 ein geht.
ServerIP = _GetIP (öffentliche IP) und Client gibt die vom Server angezeigte IP ein geht nicht.

Ich hoffe ihr habt ne Lösung parat
Mitglied: MrNetman
08.11.2012 um 21:16 Uhr
127.0.0.1 ist keine reale IP Localhost. Das ist jeweils die eigene. Also verbindet sich der Client auf sein eigenes Interface und führt Selbstgespräche.

Gruß Netman
Bitte warten ..
Mitglied: BOBO927
08.11.2012 um 21:26 Uhr
Das ist mir schon klar ;)
ich hatte zum testen nur einfach mal den Server mit 127.0.0.1 und 2 Clienten auf meinem Computer gestartet um zu gucken ob das Hin- und Herschicken von Nachrichten klappt.
Bitte warten ..
Mitglied: Lochkartenstanzer
08.11.2012 um 21:54 Uhr
Port 54321 in der windows-Firewall freigeben.

Was ist das Problem?
Bitte warten ..
Mitglied: Aba-it
09.11.2012 um 00:29 Uhr
Hallo

Meinst du mit der öffentlichen IP, die welche du von deinem ISP erhalten hast oder die des Computers im lokalen Netzwerk?

Falls die vom ISP, musst du in dem Fall logischerweise den Port 54321 auf den Server weiterleiten und - wie lks bereits meinte - deine Firewallkonfiguration entsprechend anpassen.

Gruss
Bitte warten ..
Mitglied: Lochkartenstanzer
09.11.2012, aktualisiert um 07:56 Uhr
Aus dem Servercode:

$ipadress = _GetIP()

Ich kenne mich mit AutoIT nicht aus (echte Programmierer benutzen Fortran (oder Fortran in C geschrieben ), aber liefert _getIP alle IP-Adressen zurück?

eventuell hast Du nur eine Bindung an eine einzige IP-Adresse statt auf allen. ggf mit 0.0.0.0 als IP-Adresse für den Listen-Befehl benutzen.

lks

Nachtrag:

ich habe mal google angeworfen (geht ganz einfach) und der erste Treffer war: http://www.autoitscript.com/autoit3/docs/libfunctions/_GetIP.htm

Irgendwie kann das so, wie Du es hingeschrieben hast,

$mainsocket = TCPListen($ipadress,$port,$maxuser)

nicht funktioneren, weil die "öffentliche" IP-Adresse an kein Interface deines computers gebunden ist.



nachtrag2:

Und wie b4tcher schon sagte, Port-Forwarding nicht vergessen!
Bitte warten ..
Mitglied: BOBO927
09.11.2012 um 10:01 Uhr
Danke erstmal für die Antworten

Jetzt hab ich nochmal ein paar neue Fragen:

Wie binde ich die IP denn an ein Interface(<-Was ist das?)

Und wie genau funktioniert Port-Forwarding? Heißt das der Router bekommt die Nachricht vom Clienten auf Port 54321 und muss die dann an die lokale NetzwerkIP des Rechners weiterleiten?

Die Portfreigabe in der Windowsfirewall hab ich leider nicht gefunden.

Ich hoffe ihr könnt mir das genauer erklären

Gruß BOBO
Bitte warten ..
Ähnliche Inhalte
Internet
Datenverbrauch TCP-IP Chat
gelöst Frage von 118080Internet2 Kommentare

Wie viel Daten verbraucht eigentlich eine TCP/IP Chat etwa im Durchschnitt? LG Luca

Netzwerkmanagement

Chat-Programm für das Firmennetzwerk

gelöst Frage von derhalfNetzwerkmanagement14 Kommentare

Hallo Zusammen, ich habe in einer Firma auf vielfachen wunsch Skype installiert. Allerdings nervt die Werbung, Kontaktanfragen und, dass ...

Windows Netzwerk

Einem Programm eine feste TCP-Portnummer zuweisen

Frage von rince1984Windows Netzwerk5 Kommentare

Hallo zusammen, ich habe auf einem Windows Server 2008 (SP2) ein Programm (kein Dienst) installiert das Lizenzen verwaltet. Das ...

Batch & Shell

Batch Lan-Chat

gelöst Frage von Marlon1Batch & Shell4 Kommentare

Hallo, Ich arbeite seit längerem an ein Lan-Chat aber komme nicht weiter. Es funktioniert alles super, aber wenn der ...

Neue Wissensbeiträge
Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 17 StundenWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

iOS
IOS 11.2.6 verfügbar
Information von sabines vor 22 StundeniOS

Mit dem Update soll der Bug behoben werden, bei dem eine bestimmte Zeichenkette IOS zum Absturz gebracht hat.

Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 1 TagSicherheit8 Kommentare

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 1 TagInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Heiß diskutierte Inhalte
Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server25 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

LAN, WAN, Wireless
VPN Cisco ASA5505 PaloAlto PA-200
gelöst Frage von YannoschLAN, WAN, Wireless22 Kommentare

Hallo zusammen, ich würde gerne ein Site-to-Site VPN zwischen den beiden Standorten aufbauen. PaloAlto PA200 Internetanschluss Deutsche Telekom GK ...

SAN, NAS, DAS
Qnap TS-453S Pro - Anbindung Active Directory
Frage von JuckieSAN, NAS, DAS13 Kommentare

Hallo zusammen, ich habe hier eine Qnap TS-453S Pro die sich mal so absolut gar nicht in das Active ...