<?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[Sockets(Verbindungsaufbau)]]></title><description><![CDATA[<p>Ich kann keine Verbindung zu meinem Lokalen Server aufbauen....<br />
Könnt ihr mir sagen wo das Problem liegt?</p>
<p>Client:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;WinSock2.h&gt;
#include &lt;Windows.h&gt;
#pragma comment(lib, &quot;ws2_32.lib&quot;)

using namespace std;

int WinsocketStarten()
{ // Winsocket funktionen aktivieren
	WSAData wsa;
	return WSAStartup(MAKEWORD(2, 0), &amp;wsa);
}
int main()
{

	SOCKET verbindung;
	SOCKADDR_IN addr;

	int fehlercode;

	fehlercode = WinsocketStarten();
	if (fehlercode != 0)
	{
		cout &lt;&lt; &quot;Winsocket Fehler&quot; &lt;&lt; endl;
		cin.get();
		return 1;
	}
	else
	{
		cout &lt;&lt; &quot;Winsocket wurde erstellt&quot; &lt;&lt; endl;
	}

	verbindung = socket(AF_INET, SOCK_STREAM, 0);
	if (verbindung == INVALID_SOCKET)
	{
		cout &lt;&lt; &quot;Socket Error&quot; &lt;&lt; endl;
		cin.get();
		return 1;
	}
	else
	{
		cout &lt;&lt; &quot;Socket wurde erstellt&quot; &lt;&lt; endl;
	}

	memset(&amp;addr, 0, sizeof(addr));
	addr.sin_addr.s_addr = inet_addr(&quot;127.0.0.1&quot;);
	addr.sin_family = AF_INET;
	addr.sin_port = htons(600);

	fehlercode = connect(verbindung, (SOCKADDR*)&amp;addr, sizeof(addr));
	if (fehlercode == SOCKET_ERROR)
	{
		cout &lt;&lt; &quot;Verbindung zum Server wurde nicht aufgebaut&quot; &lt;&lt; endl;
		cin.get();
		return 1;
	}
	else
	{
		cout &lt;&lt; &quot;Verbindung zum Server aufgebaut&quot; &lt;&lt; endl;
	}

	cin.get();
	return 0;
}
</code></pre>
<p>Server:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;WinSock2.h&gt;
#include &lt;Windows.h&gt;
#include &lt;string&gt;
#pragma comment(lib, &quot;ws2_32.lib&quot;)

using namespace std;

#define MAX_CLIENTS 2

int FD_Test(const SOCKET* clients)
{
	int zaehler = 0; // Zaehler Variable für anzahl verbundener Clients
	for (int i = 0; i != MAX_CLIENTS; ++i)
	{
		if (clients[i] != INVALID_SOCKET)
		{
			zaehler = zaehler + 1;
		}
	}
	return zaehler; // Verbundene Clients anzahl zurücgeben
}

int WinsocketStarten()
{  // Winsocket Funktionen aktivieren
	WSAData wsa;
	return WSAStartup(MAKEWORD(2, 0), &amp;wsa);
}

int main()
{
	int toClientNr = 0; // Client Nummer X 

	int fehlercode; // Fehlercodes in diese Variable speichern
	SOCKET clients[MAX_CLIENTS]; // Aktuelle Clients
	SOCKET akzeptiere; // akzeptiere neue Verbindungen
	FD_SET clientsTest; // Prüfe ob eine neue Verbindung ansteht
	SOCKADDR_IN addr; // Server Eigenschaften speichern

	//----------------------------Server Eigenschaften festlegen---------------------------------------
	fehlercode = WinsocketStarten(); // Winsockets aktivieren
	if (fehlercode != 0)
	{
		cout &lt;&lt; &quot;Winsocket Funktionen wurden deaktiviert...&quot; &lt;&lt; endl;
		cin.get();
		return 1;
	}
	else
	{
		cout &lt;&lt; &quot;Winsocket Funktionen wurden aktiviert...&quot; &lt;&lt; endl;
	}

	akzeptiere = socket(AF_INET, SOCK_STREAM, 0); // TCP verbindungen socket
	if (akzeptiere == INVALID_SOCKET)
	{
		cout &lt;&lt; &quot;Socket erstellung fehlgeschlagen!&quot; &lt;&lt; endl;
		cin.get();
		return 1;
	}
	else
	{
		cout &lt;&lt; &quot;Socket wurde erstellt&quot; &lt;&lt; endl;
	}

	memset(&amp;addr, 0, sizeof(addr));
	addr.sin_addr.s_addr = INADDR_ANY;
	addr.sin_family = AF_INET;
	addr.sin_port = htons(600);

	fehlercode = bind(akzeptiere, (SOCKADDR*)&amp;addr, sizeof(addr)); // binde socket an port 123
	if (fehlercode == SOCKET_ERROR)
	{
		cout &lt;&lt; &quot;Fehler beim binden des Sockets an den Port 123...&quot; &lt;&lt; endl;
		cin.get();
		return 1;
	}
	else
	{
		cout &lt;&lt; &quot;Socket wurde an Port 123 gebunden...&quot; &lt;&lt; endl;
		cin.get();
		return 1;
	}

	fehlercode = listen(akzeptiere, MAX_CLIENTS); // akzeptiere in den listen modus bringen
	if (fehlercode == SOCKET_ERROR)
	{
		cout &lt;&lt; &quot;Listen Modus(akzeptiere) fehler: &quot; &lt;&lt; GetLastError() &lt;&lt; endl;
		cin.get();
		return 1;
	}
	else
	{
		cout &lt;&lt; &quot;Akzeptiere befindet sich im Listen Modus...&quot; &lt;&lt; endl;
	}

	for (int i = 0; i != MAX_CLIENTS; ++i)
	{
		clients[i] = INVALID_SOCKET;
	}

	//---------------------------Auf Clients warten----------------------------------------------------------
	while (FD_Test(clients) != MAX_CLIENTS) // Solange anzahl der Verbundenen Cients != MAX_CLIENTS ist loop ausführen
	{
		FD_ZERO(&amp;clientsTest);
		FD_SET(akzeptiere, &amp;clientsTest);

		// Prüfe ob verbindung getrennt wurde
		for (int i = 0; i != MAX_CLIENTS; ++i)
		{
			if (clients[i] == SOCKET_ERROR)
			{
				closesocket(i);
				clients[i] = INVALID_SOCKET;
				cout &lt;&lt; &quot;Verbindung zum Client &quot; &lt;&lt; i &lt;&lt; &quot; verloren&quot; &lt;&lt; endl;
				break;
			}
		}

		// Schauen ob sich etwas in clientsTest getan hat
		fehlercode = select(0, &amp;clientsTest, nullptr, nullptr, nullptr);
		if (fehlercode == SOCKET_ERROR)
		{
			cout &lt;&lt; &quot;Select Auswahl fehler: &quot; &lt;&lt; GetLastError() &lt;&lt; endl;
			cin.get();
			return 1;
		}

		// Falls ein Client eine Verbindung aufnehmen möchte
		if (FD_ISSET(akzeptiere, &amp;clientsTest))
		{
			// Schaue nach einem Freien Socket
			for (int i = 0; i != MAX_CLIENTS; ++i)
			{
				if (clients[i] == INVALID_SOCKET)
				{
					clients[i] = accept(akzeptiere, nullptr, nullptr);
					break;
				}
			}
		}
	}
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/330242/sockets-verbindungsaufbau</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Jul 2026 11:53:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/330242.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 30 Dec 2014 10:11:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Sockets(Verbindungsaufbau) on Tue, 30 Dec 2014 10:11:48 GMT]]></title><description><![CDATA[<p>Ich kann keine Verbindung zu meinem Lokalen Server aufbauen....<br />
Könnt ihr mir sagen wo das Problem liegt?</p>
<p>Client:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;WinSock2.h&gt;
#include &lt;Windows.h&gt;
#pragma comment(lib, &quot;ws2_32.lib&quot;)

using namespace std;

int WinsocketStarten()
{ // Winsocket funktionen aktivieren
	WSAData wsa;
	return WSAStartup(MAKEWORD(2, 0), &amp;wsa);
}
int main()
{

	SOCKET verbindung;
	SOCKADDR_IN addr;

	int fehlercode;

	fehlercode = WinsocketStarten();
	if (fehlercode != 0)
	{
		cout &lt;&lt; &quot;Winsocket Fehler&quot; &lt;&lt; endl;
		cin.get();
		return 1;
	}
	else
	{
		cout &lt;&lt; &quot;Winsocket wurde erstellt&quot; &lt;&lt; endl;
	}

	verbindung = socket(AF_INET, SOCK_STREAM, 0);
	if (verbindung == INVALID_SOCKET)
	{
		cout &lt;&lt; &quot;Socket Error&quot; &lt;&lt; endl;
		cin.get();
		return 1;
	}
	else
	{
		cout &lt;&lt; &quot;Socket wurde erstellt&quot; &lt;&lt; endl;
	}

	memset(&amp;addr, 0, sizeof(addr));
	addr.sin_addr.s_addr = inet_addr(&quot;127.0.0.1&quot;);
	addr.sin_family = AF_INET;
	addr.sin_port = htons(600);

	fehlercode = connect(verbindung, (SOCKADDR*)&amp;addr, sizeof(addr));
	if (fehlercode == SOCKET_ERROR)
	{
		cout &lt;&lt; &quot;Verbindung zum Server wurde nicht aufgebaut&quot; &lt;&lt; endl;
		cin.get();
		return 1;
	}
	else
	{
		cout &lt;&lt; &quot;Verbindung zum Server aufgebaut&quot; &lt;&lt; endl;
	}

	cin.get();
	return 0;
}
</code></pre>
<p>Server:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;WinSock2.h&gt;
#include &lt;Windows.h&gt;
#include &lt;string&gt;
#pragma comment(lib, &quot;ws2_32.lib&quot;)

using namespace std;

#define MAX_CLIENTS 2

int FD_Test(const SOCKET* clients)
{
	int zaehler = 0; // Zaehler Variable für anzahl verbundener Clients
	for (int i = 0; i != MAX_CLIENTS; ++i)
	{
		if (clients[i] != INVALID_SOCKET)
		{
			zaehler = zaehler + 1;
		}
	}
	return zaehler; // Verbundene Clients anzahl zurücgeben
}

int WinsocketStarten()
{  // Winsocket Funktionen aktivieren
	WSAData wsa;
	return WSAStartup(MAKEWORD(2, 0), &amp;wsa);
}

int main()
{
	int toClientNr = 0; // Client Nummer X 

	int fehlercode; // Fehlercodes in diese Variable speichern
	SOCKET clients[MAX_CLIENTS]; // Aktuelle Clients
	SOCKET akzeptiere; // akzeptiere neue Verbindungen
	FD_SET clientsTest; // Prüfe ob eine neue Verbindung ansteht
	SOCKADDR_IN addr; // Server Eigenschaften speichern

	//----------------------------Server Eigenschaften festlegen---------------------------------------
	fehlercode = WinsocketStarten(); // Winsockets aktivieren
	if (fehlercode != 0)
	{
		cout &lt;&lt; &quot;Winsocket Funktionen wurden deaktiviert...&quot; &lt;&lt; endl;
		cin.get();
		return 1;
	}
	else
	{
		cout &lt;&lt; &quot;Winsocket Funktionen wurden aktiviert...&quot; &lt;&lt; endl;
	}

	akzeptiere = socket(AF_INET, SOCK_STREAM, 0); // TCP verbindungen socket
	if (akzeptiere == INVALID_SOCKET)
	{
		cout &lt;&lt; &quot;Socket erstellung fehlgeschlagen!&quot; &lt;&lt; endl;
		cin.get();
		return 1;
	}
	else
	{
		cout &lt;&lt; &quot;Socket wurde erstellt&quot; &lt;&lt; endl;
	}

	memset(&amp;addr, 0, sizeof(addr));
	addr.sin_addr.s_addr = INADDR_ANY;
	addr.sin_family = AF_INET;
	addr.sin_port = htons(600);

	fehlercode = bind(akzeptiere, (SOCKADDR*)&amp;addr, sizeof(addr)); // binde socket an port 123
	if (fehlercode == SOCKET_ERROR)
	{
		cout &lt;&lt; &quot;Fehler beim binden des Sockets an den Port 123...&quot; &lt;&lt; endl;
		cin.get();
		return 1;
	}
	else
	{
		cout &lt;&lt; &quot;Socket wurde an Port 123 gebunden...&quot; &lt;&lt; endl;
		cin.get();
		return 1;
	}

	fehlercode = listen(akzeptiere, MAX_CLIENTS); // akzeptiere in den listen modus bringen
	if (fehlercode == SOCKET_ERROR)
	{
		cout &lt;&lt; &quot;Listen Modus(akzeptiere) fehler: &quot; &lt;&lt; GetLastError() &lt;&lt; endl;
		cin.get();
		return 1;
	}
	else
	{
		cout &lt;&lt; &quot;Akzeptiere befindet sich im Listen Modus...&quot; &lt;&lt; endl;
	}

	for (int i = 0; i != MAX_CLIENTS; ++i)
	{
		clients[i] = INVALID_SOCKET;
	}

	//---------------------------Auf Clients warten----------------------------------------------------------
	while (FD_Test(clients) != MAX_CLIENTS) // Solange anzahl der Verbundenen Cients != MAX_CLIENTS ist loop ausführen
	{
		FD_ZERO(&amp;clientsTest);
		FD_SET(akzeptiere, &amp;clientsTest);

		// Prüfe ob verbindung getrennt wurde
		for (int i = 0; i != MAX_CLIENTS; ++i)
		{
			if (clients[i] == SOCKET_ERROR)
			{
				closesocket(i);
				clients[i] = INVALID_SOCKET;
				cout &lt;&lt; &quot;Verbindung zum Client &quot; &lt;&lt; i &lt;&lt; &quot; verloren&quot; &lt;&lt; endl;
				break;
			}
		}

		// Schauen ob sich etwas in clientsTest getan hat
		fehlercode = select(0, &amp;clientsTest, nullptr, nullptr, nullptr);
		if (fehlercode == SOCKET_ERROR)
		{
			cout &lt;&lt; &quot;Select Auswahl fehler: &quot; &lt;&lt; GetLastError() &lt;&lt; endl;
			cin.get();
			return 1;
		}

		// Falls ein Client eine Verbindung aufnehmen möchte
		if (FD_ISSET(akzeptiere, &amp;clientsTest))
		{
			// Schaue nach einem Freien Socket
			for (int i = 0; i != MAX_CLIENTS; ++i)
			{
				if (clients[i] == INVALID_SOCKET)
				{
					clients[i] = accept(akzeptiere, nullptr, nullptr);
					break;
				}
			}
		}
	}
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2435265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435265</guid><dc:creator><![CDATA[ProgrammierAnfänger]]></dc:creator><pubDate>Tue, 30 Dec 2014 10:11:48 GMT</pubDate></item><item><title><![CDATA[Reply to Sockets(Verbindungsaufbau) on Tue, 30 Dec 2014 10:19:14 GMT]]></title><description><![CDATA[<p>Bist du denn selbst mit dem debugger und breakpoints durch deinen Code gesteüt?</p>
<p>Bissel wenig Infos.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435268</guid><dc:creator><![CDATA[chp++]]></dc:creator><pubDate>Tue, 30 Dec 2014 10:19:14 GMT</pubDate></item><item><title><![CDATA[Reply to Sockets(Verbindungsaufbau) on Tue, 30 Dec 2014 10:27:45 GMT]]></title><description><![CDATA[<p>Das waren alle benötigten Infos zum Programm<br />
Der Server nimmt nur Verbindungen an<br />
Und der Client baut nur eine Verbindung zum Server auf</p>
<p>Ja ich hab schon alles mit dem Debugger ausprobiert der Client verbindet immer noch nicht mit dem Server</p>
<p>Ich habe aus diesem Grund ein weiteres Programm geschrieben das auch &quot;nur&quot; eine Verbindung zum Server aufbaut und sich dann wieder schließt jedoch erhielt ich dort auch eine Fehlermeldung</p>
<p>An den Ports habe ich auch ein wenig rum gespielt, dieses brachte mich jedoch nicht weiter <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435272</guid><dc:creator><![CDATA[ProgrammierAnfänger]]></dc:creator><pubDate>Tue, 30 Dec 2014 10:27:45 GMT</pubDate></item><item><title><![CDATA[Reply to Sockets(Verbindungsaufbau) on Tue, 30 Dec 2014 10:35:20 GMT]]></title><description><![CDATA[<p>Du erhältst also eine Fehlermeldung, meinst aber, dies verschweigen zu müssen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435274</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Tue, 30 Dec 2014 10:35:20 GMT</pubDate></item><item><title><![CDATA[Reply to Sockets(Verbindungsaufbau) on Tue, 30 Dec 2014 10:44:56 GMT]]></title><description><![CDATA[<p>Zeile 82 und 83 vom Server-Code stehen dir im Weg.</p>
<p>Edit:<br />
Das kann man mit Step-by-Step Debugging herausfinden.<br />
Überigens verwende ich zu Testzwecken oft <a href="http://www.hw-group.com/products/hercules/index_en.html" rel="nofollow">Hercules</a>, ein etwas old-fashioned Tool, welches als einfacher TCP-Server und TCP-Client agieren kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435275</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Tue, 30 Dec 2014 10:44:56 GMT</pubDate></item><item><title><![CDATA[Reply to Sockets(Verbindungsaufbau) on Tue, 30 Dec 2014 10:44:56 GMT]]></title><description><![CDATA[<p>Beim Client nimmst du den Port 600 und beim Server den Port 123...<br />
Du musst dich mit dem Port verbinden, an den der Server den Socket gebunden hat</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435277</guid><dc:creator><![CDATA[Asyl-Dämon]]></dc:creator><pubDate>Tue, 30 Dec 2014 10:44:56 GMT</pubDate></item><item><title><![CDATA[Reply to Sockets(Verbindungsaufbau) on Tue, 30 Dec 2014 11:06:32 GMT]]></title><description><![CDATA[<p>Asyl-Dämon schrieb:</p>
<blockquote>
<p>Beim Client nimmst du den Port 600 und beim Server den Port 123...<br />
Du musst dich mit dem Port verbinden, an den der Server den Socket gebunden hat</p>
</blockquote>
<p>Da ist nur der Kommentar im Server-Code falsch... beide benutzen denselben Port.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435278</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Tue, 30 Dec 2014 11:06:32 GMT</pubDate></item><item><title><![CDATA[Reply to Sockets(Verbindungsaufbau) on Tue, 30 Dec 2014 11:12:10 GMT]]></title><description><![CDATA[<p>theta schrieb:</p>
<blockquote>
<p>Zeile 82 und 83 vom Server-Code stehen dir im Weg.</p>
<p>Edit:<br />
Das kann man mit Step-by-Step Debugging herausfinden.<br />
Überigens verwende ich zu Testzwecken oft <a href="http://www.hw-group.com/products/hercules/index_en.html" rel="nofollow">Hercules</a>, ein etwas old-fashioned Tool, welches als einfacher TCP-Server und TCP-Client agieren kann.</p>
</blockquote>
<p>Ops hab das habe ich wohl übersehen vielen Dank es funktioniert jetzt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435280</guid><dc:creator><![CDATA[ProgrammierAnfänger]]></dc:creator><pubDate>Tue, 30 Dec 2014 11:12:10 GMT</pubDate></item></channel></rss>