<?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[Frage zur Netzwerkprogrammierung (connect())]]></title><description><![CDATA[<p>Hallo Community,</p>
<p>ich möchte gerne Netzwerkprogrammierung mit Sockets lernen. Dazu habe ich das Tutorial vom <a href="http://www.pc-adviser.de/socket_programmierung.html#xtoyz" rel="nofollow">zotteljedi</a> angeschaut und bin jetzt bei der ersten Implementierung des Clienten (Punkt 5).</p>
<p>Mein Code ist folgender:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;cstdlib&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/socket.h&gt;
#include &lt;netdb.h&gt;
#include &lt;netinet/in.h&gt;
#include &lt;arpa/inet.h&gt;
#include &lt;unistd.h&gt;

using namespace std;

/* Buffer Groesse bestimmen */
const int BUF_SIZE=1024;

int receive(int socket) {

	char buffer[BUF_SIZE];

	int bytes;

	bytes=recv(socket, buffer, sizeof(buffer)-1, 0);

	if(bytes == -1) {
		cerr &lt;&lt; &quot;recv fehlgeschlagen&quot; &lt;&lt; endl;
		return -1;
	}

	buffer[bytes]='\0';

	cout &lt;&lt; &quot;Server: &quot; &lt;&lt; buffer &lt;&lt; endl;

	return 0;

}

int main() {

	/* Socket deklarieren */
	int s;
	struct sockaddr_in srv;

	/* IP-Adresse */
	string ip=&quot;134.94.181.115&quot;;

	/* Port */
	int port = 5000;

	/* Initialisieren des Sockets */
	s = socket(AF_INET, SOCK_STREAM, 0);

	if(s == -1) {
		cerr &lt;&lt; &quot;socket() failed&quot;;
		return 2;
	}

	/* Zieladresse festlegen */
	srv.sin_addr.s_addr = inet_addr(ip.c_str());

	/* Port festlegen */
	srv.sin_port = htons(port);

	/* Verbindungsart festlegen */
	srv.sin_family = AF_INET;

	/* Verbinden */
        /* Hier ist der Fehler */
	if( connect(s, &amp;srv, sizeof(&amp;srv)) == -1) {
		cerr &lt;&lt; &quot;connection failed&quot; &lt;&lt; endl;
		return 3;
	}

	if(receive(s) == -1) {
		cerr &lt;&lt; &quot;error in receive()&quot; &lt;&lt; endl;

		return 4;
	}

	close(s);

	return 0;

}
</code></pre>
<p>Die Fehlermeldung beim Kompilieren ist:</p>
<pre><code>../Client.cpp: In function 'int main()':
../Client.cpp:70: error: cannot convert 'sockaddr_in*' to 'const sockaddr*' for argument '2' to 'int connect(int, const sockaddr*, socklen_t)'
make: *** [Client.o] Error 1
</code></pre>
<p>Aber genau so steht es auch im Beispielcode. Wo liegt der Fehler bei mir?</p>
<p>Außerdem wuerde ich vorzugsweise C++ und nicht reines C benutzen. Gibt es dafür auch Alternativen oder reicht es, wenn ich den Teil in C schreibe (inkludieren der Header Dateien mit .h-Endung z.B.)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/286077/frage-zur-netzwerkprogrammierung-connect</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 02:34:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/286077.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 03 May 2011 10:14:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zur Netzwerkprogrammierung (connect()) on Tue, 03 May 2011 10:14:21 GMT]]></title><description><![CDATA[<p>Hallo Community,</p>
<p>ich möchte gerne Netzwerkprogrammierung mit Sockets lernen. Dazu habe ich das Tutorial vom <a href="http://www.pc-adviser.de/socket_programmierung.html#xtoyz" rel="nofollow">zotteljedi</a> angeschaut und bin jetzt bei der ersten Implementierung des Clienten (Punkt 5).</p>
<p>Mein Code ist folgender:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;cstdlib&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/socket.h&gt;
#include &lt;netdb.h&gt;
#include &lt;netinet/in.h&gt;
#include &lt;arpa/inet.h&gt;
#include &lt;unistd.h&gt;

using namespace std;

/* Buffer Groesse bestimmen */
const int BUF_SIZE=1024;

int receive(int socket) {

	char buffer[BUF_SIZE];

	int bytes;

	bytes=recv(socket, buffer, sizeof(buffer)-1, 0);

	if(bytes == -1) {
		cerr &lt;&lt; &quot;recv fehlgeschlagen&quot; &lt;&lt; endl;
		return -1;
	}

	buffer[bytes]='\0';

	cout &lt;&lt; &quot;Server: &quot; &lt;&lt; buffer &lt;&lt; endl;

	return 0;

}

int main() {

	/* Socket deklarieren */
	int s;
	struct sockaddr_in srv;

	/* IP-Adresse */
	string ip=&quot;134.94.181.115&quot;;

	/* Port */
	int port = 5000;

	/* Initialisieren des Sockets */
	s = socket(AF_INET, SOCK_STREAM, 0);

	if(s == -1) {
		cerr &lt;&lt; &quot;socket() failed&quot;;
		return 2;
	}

	/* Zieladresse festlegen */
	srv.sin_addr.s_addr = inet_addr(ip.c_str());

	/* Port festlegen */
	srv.sin_port = htons(port);

	/* Verbindungsart festlegen */
	srv.sin_family = AF_INET;

	/* Verbinden */
        /* Hier ist der Fehler */
	if( connect(s, &amp;srv, sizeof(&amp;srv)) == -1) {
		cerr &lt;&lt; &quot;connection failed&quot; &lt;&lt; endl;
		return 3;
	}

	if(receive(s) == -1) {
		cerr &lt;&lt; &quot;error in receive()&quot; &lt;&lt; endl;

		return 4;
	}

	close(s);

	return 0;

}
</code></pre>
<p>Die Fehlermeldung beim Kompilieren ist:</p>
<pre><code>../Client.cpp: In function 'int main()':
../Client.cpp:70: error: cannot convert 'sockaddr_in*' to 'const sockaddr*' for argument '2' to 'int connect(int, const sockaddr*, socklen_t)'
make: *** [Client.o] Error 1
</code></pre>
<p>Aber genau so steht es auch im Beispielcode. Wo liegt der Fehler bei mir?</p>
<p>Außerdem wuerde ich vorzugsweise C++ und nicht reines C benutzen. Gibt es dafür auch Alternativen oder reicht es, wenn ich den Teil in C schreibe (inkludieren der Header Dateien mit .h-Endung z.B.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2057660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2057660</guid><dc:creator><![CDATA[Fabulus]]></dc:creator><pubDate>Tue, 03 May 2011 10:14:21 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Netzwerkprogrammierung (connect()) on Tue, 03 May 2011 11:00:38 GMT]]></title><description><![CDATA[<pre><code>connect(s, (sockaddr*)&amp;srv, sizeof(&amp;srv))
</code></pre>
<p>Auch wenn Leute mich jetzt wegen des C-Style-Casts steinigen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2057688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2057688</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Tue, 03 May 2011 11:00:38 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Netzwerkprogrammierung (connect()) on Tue, 03 May 2011 11:46:05 GMT]]></title><description><![CDATA[<p>Also die oben eingegebene IP-Adresse ist die von meinen Computer.<br />
Ist es dann normal, dass keine Verbindung hergestellt werden kann?</p>
<p>Oder muss ich dazu parallel den Server laufen lassen?<br />
Ich blick da nicht so ganz durch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2057711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2057711</guid><dc:creator><![CDATA[Fabulus]]></dc:creator><pubDate>Tue, 03 May 2011 11:46:05 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Netzwerkprogrammierung (connect()) on Tue, 03 May 2011 11:57:35 GMT]]></title><description><![CDATA[<p>Wenn kein Server läuft, der auf dem Port lauscht, kann natürlich keine Verbindung hergestellt werden. Dein eigener lokaler Rechner hat übrigens die IP 127.0.0.1</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2057720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2057720</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 03 May 2011 11:57:35 GMT</pubDate></item></channel></rss>