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();
}
}