Sockets
-
Socket ssocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP); IPEndPoint ep = new IPEndPoint(IPAddress.Loopback, 33333); ssocket.Bind(ep); ssocket.Listen(10000); Socket socket = ssocket.Accept();
wenn ich mich als Client versuche anzumeldet, meldet Visual C#, dass der Server die Verbindung verweigert. Auch wenn ich die Firewall ausschalte...
weiß jmd wieso?? oder kennt das problem??
-
aja... ich hab nen router vorgeschalten... der mir die ip 192.168.x.x gibt... hab über inet dann die direkte als verbindungsip angegeben...
ist das so korrekt oder macht man das anders??
-
Wenn du nicht aus deinem lokalen Netzwerk auf den Server zugreifst musst du deine öffentliche IP-Adresse benutzen. Diese wird meistens im Web-Interface deines Routers angezeigt, wenn er eines hat oder du schaust z.b. auf http://www.wieistmeineip.de/. Wenn dein Router NAT macht (was die meisten einfachen Router tun) musst du außerdem noch eine Port-Forwarding-Regel einrichten, die einen beliebigen externen Port auf deine lokale IP-Adresse und Port weiterleitet.
-
ich wo mache ich das?? beim router oder am localhost??
-
Zu deinem Quellcode, du musst statt
IPAdress.Loopback
IPAdress.Any
sonst akzeptierst du nur Verbindungen, die von deinem eigenen Rechner kommen.
-
Die Port-Forwarding Regel muss im Router eingerichtet werden.
Siehe dazu auch: https://secure.wikimedia.org/wikipedia/de/wiki/Network_Address_Translation#Destination_NAT
-
aber gibts da nichts anderes?? ich mein... wie funktioniert denn dann ein online spiel.. oder das windows update oder icq??? ich habe für die ganzen keine regel erstellt???
-
Anstatt direkt die Socket-Klasse zu benutzen, ist es einfacher die Klassen TcpClient sowie TcpListener zu verwenden...
P.S. Verwendest du denn jetzt
IPAdress.Any
?
Und von wo greifst du denn jetzt auf deinen Server zu (eigener Rechner, LAN, Internet)?
-
zuerst hatte ich ja TCP Client und Listener.. da ging das aber auch nicht... und da habe ich es mit Sockets versucht -> ging auch net -> Forum^^
ja ich verwende IP.Any
das sieht ungefähr so aus...
192.168.54.1 10.79.3.112
MeinPC -------------- Router ------------- (Internet) ------- Router --Serverist ein bisschen triggi^^
der server läuft auf meinen laptop... jetzt... später soll er dann auf ieinen comp im internet laufen. also dann ohne den router vor dem server^^
aber wie macht das icq?? sende geht ja... aber empfangen net... WIE macht das ICQ???
-
Da musst Du bei deinem Router 1. das entsprechende Port Forwarding erstellen und 2. den Port / Service in der Firewall freigeben.
-
Du hast ja wohl keinen eigenen ICQ-Server in deinem LAN, vermute ich mal.
Daher brauchst du auch kein Port-Forwarding für ICQ. Das ist nur für eingehende Verbindungen notwendig.
Allerdings musst du, wie theta schon richtig geschrieben hat, bei ausgehenden Verbindungen einen entsprechenden Eintrag in deiner Firewall machen. Bei der Windows Firewall passiert das fast automatisch, in dem Windows dich fragt, wenn ein neues Programm eine Verbindung aufbauen möchte, ob du das zulassen willst. Erlaubst du es, wird eine entsprechende Regel erstellt.
-
ich hab doch schon geschrieben dass ich die firewall ausgemacht habe^^
ich will doch nur sagen... wenn man für einen lokalen portzugriff mit einen nat router einen forwarding regel erstellen muss, dann muss man das doch auch für zb icq ?!?!?!?!
weiß jmd wie icq das macht??
-
ICQ baut keine Verbindung von sich aus zu dir auf. Der Verbindungsaufbau geht immer von dir aus. Damit ist auf deiner Seite kein Port Forwarding nötig.
Das Ganze wird hier langsam ziemlich OT.
-
nein... icq muss auch empfangen.... das war meine frage^^
-
ich123123123 schrieb:
nein... icq muss auch empfangen.... das war meine frage^^
Um zum epfangen brauchst Du eine Verbindung. Und die baut der Client auf.
Sobald die Verbindung steht, kann gesendet UND emfpangen werden.Ev. das ein Buch für dich:
Computernetzwerke | ISBN: 9783827370112