<?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[Socket-Klasse]]></title><description><![CDATA[<p>Hallo, ich habe mir mal eine Klasse für einen Client-Socket geschrieben.<br />
Das Verbinden funktioniert gut, nur wenn ich etwas schicken möchte kommt rein garnichts an.</p>
<p>Hier der Code:</p>
<pre><code>class CServer
{
	private:
	WSADATA wsa;
	SOCKET Socket;
	SOCKADDR_IN Addr;

	public:
	long Status;

	CServer()
	{
		Status = WSAStartup(MAKEWORD(2,0),&amp;wsa);
	}

	void Connect(char* IP,u_short PORT)
	{
		Socket = socket(AF_INET,SOCK_STREAM,0);
		if (Socket == INVALID_SOCKET)
		{
			Status = SOCKET_ERROR;
			return;
		}
		memset(&amp;Addr,0,sizeof(SOCKADDR_IN));
		Addr.sin_family = AF_INET;
		Addr.sin_port = htons(PORT);
		Addr.sin_addr.s_addr = inet_addr(IP);
		Status = connect(Socket,(SOCKADDR*)&amp;Addr,sizeof(SOCKADDR));
	}

	void Send(char* Message,int length)
	{
		send(Socket,Message,length,0);
	}

	std::string Recv()
	{
		char Message[1000] = &quot;&quot;;
		recv(Socket,Message,1000,0);
		return (std::string)Message;
	}

	void Disconnect()
	{
		WSACleanup();
	}
};

CServer Server;
Server.Connect(&quot;255.255.255.255&quot;,9999);
char Text[] = &quot;Hallo&quot;;
Server.Send(Text,sizeof(Text)); //Kommt nichts an beim Server
</code></pre>
<p>Was mache ich falsch?</p>
<p>Vielen Dank schonmal an alle die sichs anschaun.</p>
<p>lg Max</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/199167/socket-klasse</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Apr 2026 01:32:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/199167.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 29 Nov 2007 14:42:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Socket-Klasse on Thu, 29 Nov 2007 14:45:20 GMT]]></title><description><![CDATA[<p>Hallo, ich habe mir mal eine Klasse für einen Client-Socket geschrieben.<br />
Das Verbinden funktioniert gut, nur wenn ich etwas schicken möchte kommt rein garnichts an.</p>
<p>Hier der Code:</p>
<pre><code>class CServer
{
	private:
	WSADATA wsa;
	SOCKET Socket;
	SOCKADDR_IN Addr;

	public:
	long Status;

	CServer()
	{
		Status = WSAStartup(MAKEWORD(2,0),&amp;wsa);
	}

	void Connect(char* IP,u_short PORT)
	{
		Socket = socket(AF_INET,SOCK_STREAM,0);
		if (Socket == INVALID_SOCKET)
		{
			Status = SOCKET_ERROR;
			return;
		}
		memset(&amp;Addr,0,sizeof(SOCKADDR_IN));
		Addr.sin_family = AF_INET;
		Addr.sin_port = htons(PORT);
		Addr.sin_addr.s_addr = inet_addr(IP);
		Status = connect(Socket,(SOCKADDR*)&amp;Addr,sizeof(SOCKADDR));
	}

	void Send(char* Message,int length)
	{
		send(Socket,Message,length,0);
	}

	std::string Recv()
	{
		char Message[1000] = &quot;&quot;;
		recv(Socket,Message,1000,0);
		return (std::string)Message;
	}

	void Disconnect()
	{
		WSACleanup();
	}
};

CServer Server;
Server.Connect(&quot;255.255.255.255&quot;,9999);
char Text[] = &quot;Hallo&quot;;
Server.Send(Text,sizeof(Text)); //Kommt nichts an beim Server
</code></pre>
<p>Was mache ich falsch?</p>
<p>Vielen Dank schonmal an alle die sichs anschaun.</p>
<p>lg Max</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412330</guid><dc:creator><![CDATA[MaDsTyLe]]></dc:creator><pubDate>Thu, 29 Nov 2007 14:45:20 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Klasse on Thu, 29 Nov 2007 15:18:37 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-403.html" rel="nofollow">HumeSikkins</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-4.html" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412371</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Thu, 29 Nov 2007 15:18:37 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Klasse on Thu, 29 Nov 2007 15:33:36 GMT]]></title><description><![CDATA[<p>Kannst du mal den Code posten, wo du die Daten überhaupt empfangen willst?<br />
Du rufst Recv ja nirgens auf.</p>
<p>Funktioniert der Connect auch mit der IP (255.255.255.255)?</p>
<p>Kommt gar nix an, oder nur ein Zeichen? sizeof(text) ist an der Stelle falsch, da sollte strlen(text) hin^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412386</guid><dc:creator><![CDATA[SALOMON]]></dc:creator><pubDate>Thu, 29 Nov 2007 15:33:36 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Klasse on Thu, 29 Nov 2007 15:38:00 GMT]]></title><description><![CDATA[<p>Du wartest ja beim Empfangen darauf, daß 1000 Zeichen ankommen... also steht solange der Prozess.</p>
<p>Du solltest zuerst die Länge als int übertragen und danach dann die Daten.<br />
Beim Empfangen erst die Länge auslesen und danach genau soviele Daten abfragen, wie in der Länge angegebn sind.</p>
<p>Und wenn du unterschiedliche System bzw. Endianess verwendest, solltest du die Funktion ntohl() und htonl() zum Übertragen verwenden.</p>
<p>Zum Testen kannst du aber einfach mal die Konstante 1000 beim Senden als Länge übergeben, dann sollte auch das Empfangen funktionieren.<br />
Und übrigens kann es passieren, daß recv() nur einen Teil der Daten empfängt, d.h. du mußt dir eine Schleife darum bauen, bis du alle benötigten Daten zusammen hast.</p>
<p>Schau dir mal andere Threads hier im Forum bzgl. Sockets (send und recv) an...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412395</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Thu, 29 Nov 2007 15:38:00 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Klasse on Thu, 29 Nov 2007 15:42:13 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/11561">@Salomon</a>: Nein, die Parameter die ich hier bei Connect() übergebe, entsprechen nicht der Wirklichkeit.</p>
<p>Das Server-Programm macht nichts anderes als eine while()-Schleife ins Morgengrauen und dann immer fleißig recv() und ausgeben.</p>
<p>Habe auch einen anderen Clienten getestet, welcher keine Klasse nutzt, sondern stur runtergeschriebenen Code - das funktioniert.</p>
<p>Angemerkt sei noch, daß nicht mal send(Server.Socket,Text,sizeof(Text),0) funktioniert.</p>
<p>kg Max</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412396</guid><dc:creator><![CDATA[MaDsTyLe]]></dc:creator><pubDate>Thu, 29 Nov 2007 15:42:13 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Klasse on Thu, 29 Nov 2007 15:42:42 GMT]]></title><description><![CDATA[<p>Hallo,<br />
255.255.255.255 ist die Local Broadcast Addresse.<br />
Auf die kann nicht Verbunden werden (TCP/IP).</p>
<p>Wähle die Adresse der Gegenstelle (des Servers). Falls der Server auf dem gleichen Rechner ist kannst Du 127.0.0.1 nehmen.</p>
<p>Aus einem char Array einen std::string machen:</p>
<pre><code class="language-cpp">return std::string(Message);
</code></pre>
<pre><code class="language-cpp">Status = connect(Socket,(SOCKADDR*)&amp;Addr,sizeof(SOCKADDR));
</code></pre>
<p>Du musst die Socket Variable names socket übergeben (nicht den Typ).</p>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412402</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Thu, 29 Nov 2007 15:42:42 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Klasse on Thu, 29 Nov 2007 15:50:15 GMT]]></title><description><![CDATA[<p>Schonmal vielen Dank für Eure Antworten!</p>
<p>Nochmal: 255.255.255.255 war ein Beispiel.</p>
<p>Wenn Du C kennst weißt Du, dass (std::string)Message und std::string(Message) nur syntaktisch unterschiedlich sind.</p>
<p>Wie sollte connect() Deines Erachtens aussehen?</p>
<p>lg Max</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412407</guid><dc:creator><![CDATA[MaDsTyLe]]></dc:creator><pubDate>Thu, 29 Nov 2007 15:50:15 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Klasse on Thu, 29 Nov 2007 15:47:03 GMT]]></title><description><![CDATA[<blockquote>
<p>Du wartest ja beim Empfangen darauf, daß 1000 Zeichen ankommen... also steht solange der Prozess.</p>
</blockquote>
<p>Stimmt nicht, das gibt bloss die Grösse des übergebenen Buffers an.<br />
recv kann nach wenigen Bytes wieder zurückkehren. Die Anzahl empfangenen Bytes stehen im return Wert von revc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412408</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Thu, 29 Nov 2007 15:47:03 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Klasse on Thu, 29 Nov 2007 15:48:33 GMT]]></title><description><![CDATA[<p>-&gt; Quatsch, connect ist in Ordnung. Sorry.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412409</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Thu, 29 Nov 2007 15:48:33 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Klasse on Thu, 29 Nov 2007 15:53:25 GMT]]></title><description><![CDATA[<p>Dieses Problem macht mich ganz krank, vielleicht schau ich mich mal um ob ich eine funktionierende Klasse finde und gleiche dann mal den Code ab.</p>
<p>Grrrr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>lg Max</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412414</guid><dc:creator><![CDATA[MaDsTyLe]]></dc:creator><pubDate>Thu, 29 Nov 2007 15:53:25 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Klasse on Thu, 29 Nov 2007 15:55:41 GMT]]></title><description><![CDATA[<p>Also wie gesagt, der einzige Fehler, der mir da spontan auffällt ist, dass Server.Send(Text,sizeof(Text)); falsch is. Da muss statt sizeof(Text) strlen hin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412415</guid><dc:creator><![CDATA[SALOMON]]></dc:creator><pubDate>Thu, 29 Nov 2007 15:55:41 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Klasse on Sat, 01 Dec 2007 16:07:18 GMT]]></title><description><![CDATA[<p>So ich melde mich nochmal, weil ich nur geringfügig weitergekommen bin.</p>
<p>Wahrscheinlich liegt die Lösung des Problems im Kontext des Programmaublaufs.</p>
<p>Hier noch einmal meine Klasse (ein wenig geändert):</p>
<pre><code>class CServer
{
	private:
	WSADATA wsa;
	SOCKET Socket;
	SOCKADDR_IN Addr;

	public:
	long Status;

	CServer()
	{
		Status = WSAStartup(MAKEWORD(2,0),&amp;wsa);
	}

	void Connect(char* IP,u_short PORT)
	{
		Socket = socket(AF_INET,SOCK_STREAM,0);
		if (Socket == INVALID_SOCKET)
		{
			Status = SOCKET_ERROR;
			return;
		}
		memset(&amp;Addr,0,sizeof(SOCKADDR_IN));
		Addr.sin_family = AF_INET;
		Addr.sin_port = htons(PORT);
		Addr.sin_addr.s_addr = inet_addr(IP);
		Status = connect(Socket,(SOCKADDR*)&amp;Addr,sizeof(SOCKADDR));
	}

	void Send(const std::string Message)
	{
		send(Socket,Message.data(),Message.length(),0);
	}

	std::string Recv()
	{
		char Message[1000] = &quot;&quot;;
		recv(Socket,Message,1000,0);
		return (std::string)Message;
	}

	void Disconnect()
	{
		WSACleanup();
	}
};
</code></pre>
<p>Das Problem einmal genauer dargestellt:</p>
<pre><code>LRESULT CALLBACK WndMain(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
	CServer Server;

	switch (msg)
	{
		case WM_CREATE:
		{
			Server.Connect(&quot;255.255.255.255&quot;,9999); //Pseudo
			Server.Send(&quot;TEST1&quot;); //Kommt an
			break;
		}
		case WM_COMMAND:
		{
			switch (LOWORD(wParam))
			{
				case ID_BUTTON_CLICKED:
				{
					Server.Send(&quot;TEST2&quot;); //Kommt nicht an
					break;
				}
			}
			break;
		}
		case WM_DESTROY:
		{
			PostQuitMessage(0);
			break;
		}
	}
	return DefWindowProc(hWnd,msg,wParam,lParam);
}
</code></pre>
<p>Hoffentlich kommt jemand drauf.</p>
<p>Ich weiß nimmer weiter...</p>
<p>lg Max</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413424</guid><dc:creator><![CDATA[MaDsTyLe]]></dc:creator><pubDate>Sat, 01 Dec 2007 16:07:18 GMT</pubDate></item><item><title><![CDATA[Reply to Socket-Klasse on Sat, 01 Dec 2007 16:51:11 GMT]]></title><description><![CDATA[<p>Um Gottes Willen, ich bin so ein Idiot...</p>
<p>Hab es gelöst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>1. Instanz der Klasse global anlegen<br />
2. In der WinMain()-Funktion Server.Connect() ausführen</p>
<p>Ansonsten bleibt alles gleich, weil CServer Server jetzt für alle Funktionen global ist und von überall angesteuert werden kann.</p>
<p>Man man, peinlich wie ich mich wieder zum Deppen gemacht hab xD</p>
<p>Naja, bis demnächst und Danke an alle die sich meiner Blödheit angenommen haben^^</p>
<p>lg Max</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413445</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413445</guid><dc:creator><![CDATA[MaDsTyLe]]></dc:creator><pubDate>Sat, 01 Dec 2007 16:51:11 GMT</pubDate></item></channel></rss>