Mark T.: Socket, Threads verwenden

Beitrag lesen

Hallo,

ich arbeite mich im Moment in Socket-Programmierung ein. Ich sehe nun 2. Stellen bei Server an denen man Threads einbauen könnten. Würde dies mal jemand überprüfen, ob das so stimmt. Bitte keine Links posten - habe schon genug. Vielen Dank!!!

Pseudo-Programmiersprache im Beispiel unten - verwende aber C++/C#

1. Möglichkeit
socket()
bind()
listen()
while(true)
{
   clientSocket = serverSocket.accept()
   StarteThread(clientSocket);
}

In jedem Thread wird nun die Client-Anfrage abgearbeitet. Es werden so viele Threads gestartet wie Anfragen von Clients ausgehen. Nach dem Abarbeiten einer Anfrage wird der zugehörige Thread geschlossen.

public void ServerThread(Socket clientSocket)
{
   clientSocket.Receive();
   clientSocket.Send();
   clientSocket.Close();
}

2. Möglichkeit
socket()
bind()
listen()
StarteThread thread1;
StarteThread thread2;
StarteThread …
StarteThread threadn;

In jedem Thread gestarteten Thread kann nun ein Client akzeptiert werden. Es werden n Threads gestartet und es können somit auch nur n Anfragen bearbeitet werden. Die n Threads sind immer gleichzeitig offen. Wird eine Anfrage von einem Thread abgearbeitet, kann dieser anschließend die nächste Anfrage abarbeiten.

public void ServerThread()
{
   while(true)
   {
      clientSocket = serverSocket.accept()
      clientSocket.Receive();
      clientSocket.Send();
      clientSocket.Close();
   }
}