<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Server verwaltet Clients über Threads]]></title><description><![CDATA[<p>Hi,<br />
ich hatte schon in meinem anderen Thread die Frage gestellt, mache aber besser einen eigenen Faden hier für auf...</p>
<p>ich würde gerne realisieren, das mehrere Clients ein Lebenszeichen an einen Server senden, und diese Clients beim Server über Threads verwaltet werden.<br />
Die Clients sollten dann in einer Liste oder Map gespeichert werden und einen &quot;Lebenszeichentimer&quot; bekommen.<br />
Wie muss ich dieses Problem am besten angehen?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/199452/server-verwaltet-clients-über-threads</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Apr 2026 21:58:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/199452.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 03 Dec 2007 11:02:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Server verwaltet Clients über Threads on Mon, 03 Dec 2007 11:02:08 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich hatte schon in meinem anderen Thread die Frage gestellt, mache aber besser einen eigenen Faden hier für auf...</p>
<p>ich würde gerne realisieren, das mehrere Clients ein Lebenszeichen an einen Server senden, und diese Clients beim Server über Threads verwaltet werden.<br />
Die Clients sollten dann in einer Liste oder Map gespeichert werden und einen &quot;Lebenszeichentimer&quot; bekommen.<br />
Wie muss ich dieses Problem am besten angehen?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1414134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1414134</guid><dc:creator><![CDATA[Mr.Bean06]]></dc:creator><pubDate>Mon, 03 Dec 2007 11:02:08 GMT</pubDate></item><item><title><![CDATA[Reply to Server verwaltet Clients über Threads on Mon, 03 Dec 2007 12:51:46 GMT]]></title><description><![CDATA[<p>am besten erstellst du für jeden client einen thread, und die clients verwaltest du in einer liste (oder einer map). außerdem hat jeder client einen &quot;lebenszeichentimer&quot;.</p>
<p>worüber genau willst du was wissen? threads? timer? liste? map?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1414193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1414193</guid><dc:creator><![CDATA[kristallkugel2000]]></dc:creator><pubDate>Mon, 03 Dec 2007 12:51:46 GMT</pubDate></item><item><title><![CDATA[Reply to Server verwaltet Clients über Threads on Mon, 03 Dec 2007 13:03:29 GMT]]></title><description><![CDATA[<p>Zunächst einmal würde mich interessieren wie ich in meinen vorhandenen Code die Verwaltung durch Threads einbinden kann? und wie kann ich die Clients unterschieden, da ich sie ja zunächst alle nur lokal auf meinen Rechner starten möchte? Kann ich hier eine Unterschiedung durch Ports treffen? Wenn ja wie, und wenn nein, wie dann?</p>
<p>Hier mal der Code des Servers:</p>
<pre><code>// Server.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.
//

#include &quot;stdafx.h&quot;
#include &lt;winsock2.h&gt;
#include &lt;iostream&gt;

//Mitteilung an den Linker, wo sich die nötigen Implemanteation der Winsock Funktionen befinden
#pragma comment(lib, &quot;ws2_32.lib&quot;)

using namespace std;

int main()
{
	WSADATA wsa;
	//initialisierung von Winsock (Parameter(Version, Infos zur API))
	WSAStartup (MAKEWORD (1,1) ,&amp;wsa);

	SOCKET listenSocket;
	listenSocket = socket (AF_INET, SOCK_STREAM, 0 );

	sockaddr_in addr;
	addr.sin_addr.s_addr = INADDR_ANY; 
	addr.sin_port = htons (1001);
	addr.sin_family = AF_INET;

	if(bind(listenSocket,(struct sockaddr*)&amp;addr, sizeof(addr)) == -1)
	{
		cout&lt;&lt;&quot;Fehler bei bind&quot;;
	}	

	if (listen(listenSocket,3) == -1)
	{
		cout&lt;&lt;&quot;Fehler beim listen&quot;;

	}
	printf(&quot;Waiting for client to connect...\n&quot;);

	SOCKET clientSocket = accept(listenSocket,(struct sockaddr*)&amp;addr, 0); 
	if (clientSocket == -1) 
	{ 
		cout&lt;&lt;&quot;Fehler bei accept&quot;;
		closesocket(listenSocket);
    WSACleanup();
    return 1;

	} 
	cout&lt;&lt;&quot;Client connected.&quot;&lt;&lt;endl;

	char buffer[254]; 
	int bytes; 

	//Daten die empfangen werden 
	bytes = recv(clientSocket, buffer, sizeof(buffer) - 1, 0); 

	buffer[bytes] = '\0';

	cout&lt;&lt;buffer;
	MessageBox(0, buffer, &quot;Client Connect!&quot;, MB_ICONINFORMATION);

	//listenSocket wird geschlossen
	closesocket(listenSocket);
	WSACleanup();

	cout&lt;&lt;&quot;Close Connect&quot;;
	cin.get();
	return 0;
}
</code></pre>
<p>und hier der Code des Clients:</p>
<pre><code>// Client.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.
//

#include &quot;stdafx.h&quot; 
#include &lt;iostream&gt;
#include &lt;winsock2.h&gt;

//Mitteilung an den Linker, wo sich die nötigen Implemanteation der Winsock Funktionen befinden
#pragma comment(lib, &quot;ws2_32.lib&quot;)

using namespace std;

int main()
{
	WSADATA wsa;
	//initialisierung von Winsock (Parameter(Version, Infos zur API))
  WSAStartup (MAKEWORD (1,1) ,&amp;wsa);

	//Schnittstelle zur Netzwerkschicht
	SOCKET s;
	char clientNummer[254] = &quot;Client 1\r\n&quot;;
	//Socket beinhaltet (IP, TCP, Raw-Sockets das Protokoll)
	s = socket (AF_INET, SOCK_STREAM, 0 );

	//hier wird die Serveradresse gespeichert	
	sockaddr_in addr;
	//umwandeln von einem IP Strin in einen 4 byte Wert
	addr.sin_addr.s_addr = inet_addr(&quot;127.0.0.1&quot;);
	//mit htons wird ein short (TCP Ports) von host byte order (höchstes byte links) in network byte order umgewandelt (höchstes byte rechts)
	addr.sin_port = htons (1001);
	//Adressenfamilie -&gt; IP
	addr.sin_family = AF_INET;

	//Verbindung zum Server (Verbindung zum eigenen Socket, Serveradresse, Größe der Serveradresse) 
	if(connect(s, (SOCKADDR *) &amp;addr, sizeof(addr)) == SOCKET_ERROR)
		//wenn kein Connect, dann gibt es einen Socketerror und es wird eine Fehlermeldung ausgegeben
		return (MessageBox(0, &quot;Verbindung fehlgeschlagen!&quot;, &quot;WinSock Tutorial Series&quot;, MB_ICONEXCLAMATION));

	//zusendene Daten(mein Socket, den wert aus dem Buffer, Länge des Buffer, Flag)
	send(s, clientNummer, strlen(clientNummer), 0);

	cout&lt;&lt;&quot;\nEnde&quot;;
	cin.get();
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1414201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1414201</guid><dc:creator><![CDATA[Mr.Bean06]]></dc:creator><pubDate>Mon, 03 Dec 2007 13:03:29 GMT</pubDate></item></channel></rss>