2016-08-30 2 views
2

Hallo, ich habe eine einfache Frage kann ich zwei tcp Socket-Listener laufen, aber jeder von ihnen auf einen anderen Port wie ein Server zu hören, aber 2 Ports zu hören? Weil ich Dilemma mit der TCP-Programmierung und allen Socket-Programmierung habe und das ist etwas, über das ich nie im Internet gelesen habe.TCP/IP-Socket-Port-Listening

Dank ist das Schema von dem, was ich will This is The Diagram of the Connection Wir haben eine IP und zwei verschiedene Verbindungsanschlüsse

ich diese Informationen hoffen tun für das Problem voll ist und Sie auf eine einfache Art und Weise meine Idee geben zu verstehen . Danke nochmal

+0

Einfache Antwort: ja :) In der Tat werden Sie auch verschiedene Ports für jeden Hörer, das ist, wie Sie Ihre Dienste nutzen müssen sind auf Ihrem Server adressiert – Sebastian

Antwort

0

Es ist möglich.

zitieren @BuckCherry

..two Clients denselben Server-Port anschließen kann jeder Client, da für uns eine andere Buchse (als Client-IP wird auf jeden Fall unterscheiden) zuweisen können. Same-Client kann auch zwei Steckdosen müssen denselben Server-Port verbindet - da solche Buchsen unterscheiden sich von SRC-PORT ...

Erste unter zwei Regeln erinnern:

  1. Primärschlüssel einer Fassung: A Socket wird durch {SRC-IP, SRC-PORT, DEST-IP, DEST-PORT, PROTOCOL} nicht von {SRC-IP, SRC-PORT, DEST-IP, DEST-PORT} identifiziert - Protokoll ist ein wichtiger Teil der Definition eines Sockets.

  2. OS Prozess & Socket Mapping: Ein Prozess kann mit mehreren Sockets assoziiert werden (kann öffnen/hören), was für viele Leser offensichtlich sein könnte.

Beispiel 1: Zwei Clients zu einem Server-Port verbindet bedeutet: socket1 {SRC-A, 100, DEST-X, 80, TCP} und socket2 {SRC-B, 100, DEST-X, 80, TCP}. Das heißt, Host A verbindet sich mit Port 80 des Servers X und ein anderer Host B verbindet sich mit demselben Server X mit demselben Port 80. Nun hängt die Art und Weise, wie der Server diese beiden Sockets behandelt, davon ab, ob der Server single threaded oder multiple threaded ist erkläre das später). Wichtig ist, dass ein Server mehrere Sockets gleichzeitig hören kann.

More info here

+0

Danke Für Ihre Meinung, wie Sie dieses Problem zu lösen und in die Tiefe zu beantworten! –

+0

Sehr willkommen. Wenn eine der Antworten Ihre Frage am besten erfüllt, akzeptieren Sie diese bitte (Häkchen) und aktualisieren Sie alle, die Sie hilfreich finden. – user919426

+1

die site sagt, dass ich 15 reputation brauche und wie immer meine AC ist neu ich kann nicht deshalb ich schreibe meine opition –

1

kann ich laufe zwei TCP-Socket-Hörer aber jeder jeden von ihnen auf einem anderen Port wie ein Server, aber 2-Port des zu hören sein?

Ja, Sie können. deklarieren nur 2 verschiedene IPEndPoint

IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 8888); 
IPEndPoint localEndPoint2 = new IPEndPoint(ipAddress, 8880); 

und binden den jeweiligen Socket es

Socket s1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 

Socket s2 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 

s1.Bind(localEndPoint); 
s2.Bind(localEndPoint2); 
+0

Danke für die informationen und die schnelle antwort auf die GEWINDE! –