<?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[problem mit sockets]]></title><description><![CDATA[<p>Hi Leute</p>
<p>ich hab jetzt im Internet son schönes Tutorial über Sockets gefunden, das sogar ich halbwegs versteh. Das ganze hab ich kompiliert und ausgeführt, hat auch auf meinem eigenen PC super geklappt. Dann hab ich das mal nem Freund geschickt, um zu schaun, ob das auch übers Internet geht, und es hat leider nich geklappt =(. Jetzt wüsst ich gerne warum und hoff ihr könnt mir dabei helfen ^^<br />
Hier mal der quellcode:<br />
Server:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include&lt;winsock2.h&gt;
#include&lt;windows.h&gt;

using namespace std;

int startWinsock();
long getAddrFromString(char* hostnameOrIp, SOCKADDR_IN* addr);

SOCKET s;
SOCKET connectedSocket;
SOCKADDR_IN addr;
char buf[256];
char buf2[256];

int main()
{
    int rc;
    rc=startWinsock();
    if(rc!=0)
    {
        cout&lt;&lt;&quot;Winsock nicht gestartet&quot;&lt;&lt;endl;
    }
    else
    {
        cout&lt;&lt;&quot;Winsock gestartet&quot;&lt;&lt;endl;
    }

    s=socket(AF_INET, SOCK_STREAM, 0);
    if(s==INVALID_SOCKET)
    {
        cout&lt;&lt;&quot;Socket wurde nicht erstellt, Fehler: &quot;&lt;&lt;WSAGetLastError()&lt;&lt;endl;
    }
    else
    {
        cout&lt;&lt;&quot;Socket wurde erstellt&quot;&lt;&lt;endl;
    }

    memset(&amp;addr, 0, sizeof(SOCKADDR_IN));

    addr.sin_family=AF_INET;
    addr.sin_port=htons(12345);
    addr.sin_addr.s_addr=ADDR_ANY;

    rc=bind(s,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR_IN));

    if(rc==SOCKET_ERROR)
    {
        cout&lt;&lt;&quot;Fehler bing, Fehlercode: &quot;&lt;&lt;WSAGetLastError()&lt;&lt;endl;
    }
    else
    {
        cout&lt;&lt;&quot;Socket an Port &quot;&lt;&lt;addr.sin_port&lt;&lt;&quot; gebunden&quot;&lt;&lt;endl;
    }

    rc=listen(s, 10);
    if(rc==SOCKET_ERROR)
    {
        cout&lt;&lt;&quot;Fehler: listen, fehlercode: &quot;&lt;&lt;WSAGetLastError()&lt;&lt;endl;
    }
    else
    {
        cout&lt;&lt;&quot;Socket ist im Listen-Modus&quot;&lt;&lt;endl;
    }

    connectedSocket=accept(s,NULL,NULL);

    if(connectedSocket==INVALID_SOCKET)

    {

      cout&lt;&lt;&quot;Fehler accept, fehlerdoce: &quot;&lt;&lt;WSAGetLastError()&lt;&lt;endl;

      return 1;

    }

    else

    {

      cout&lt;&lt;&quot;Neue Verbindung akzeptiert&quot;&lt;&lt;endl;

    }

    while(rc!=SOCKET_ERROR)
  {
    rc=recv(connectedSocket,buf,256,0);
    if(rc==0)
    {
      printf(&quot;Server hat die Verbindung getrennt..\n&quot;);
      break;
    }
    if(rc==SOCKET_ERROR)
    {
      printf(&quot;Fehler: recv, fehler code: %d\n&quot;,WSAGetLastError());
      break;
    }
    buf[rc]='\0';
    printf(&quot;Client sendet: %s\n&quot;,buf);
    sprintf(buf2,&quot;Du mich auch %s&quot;,buf);
    rc=send(connectedSocket,buf2,strlen(buf2),0);
    }
    closesocket(s);
    closesocket(connectedSocket);
    WSACleanup();

    cout&lt;&lt;&quot;Verbindung unterbrochen&quot;&lt;&lt;endl;
    system(&quot;pause&quot;);

    return 0;
}

int startWinsock()

{

  WSADATA wsa;

  return WSAStartup(MAKEWORD(2,0),&amp;wsa);
}

long getAddrFromString(char* hostnameOrIp, SOCKADDR_IN* addr)

{

  long rc;

  unsigned long ip;

  HOSTENT* he;

  /* Parameter prüfen */

  if(hostnameOrIp==NULL || addr==NULL) return SOCKET_ERROR;

  /* eine IP in hostnameOrIp ? */

  ip=inet_addr(hostnameOrIp);

  /* bei einem fehler liefert inet_addr den Rückgabewert INADDR_NONE */

  if(ip!=INADDR_NONE)

  {

    addr-&gt;sin_addr.s_addr=ip;

    return 0;

  }

  else

  {

    /* Hostname in hostnameOrIp auflösen */

    he=gethostbyname(hostnameOrIp);

    if(he==NULL)

    {

      return SOCKET_ERROR;

    }

    else

    {

      /*die 4 Bytes der IP von he nach addr kopieren */

      memcpy(&amp;(addr-&gt;sin_addr),he-&gt;h_addr_list[0],4);

    }

    return 0;

  }

}
</code></pre>
<p>und der client:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include&lt;winsock2.h&gt;
#include&lt;windows.h&gt;

using namespace std;

int startWinsock();
long getAddrFromString(char* hostnameOrIp, SOCKADDR_IN* addr);

SOCKET s;
SOCKADDR_IN addr;
char buf[256];

int main()
{
    int rc=0;
    rc=startWinsock();
    if(rc!=0)
    {
        cout&lt;&lt;&quot;Winsock nicht gestartet&quot;&lt;&lt;endl;
    }
    else
    {
        cout&lt;&lt;&quot;Winsock gestartet&quot;&lt;&lt;endl;
    }

    s=socket(AF_INET, SOCK_STREAM, 0);
    if(s==INVALID_SOCKET)
    {
        cout&lt;&lt;&quot;Socket wurde nicht erstellt, Fehler: &quot;&lt;&lt;WSAGetLastError()&lt;&lt;endl;
    }
    else
    {
        cout&lt;&lt;&quot;Socket wurde erstellt&quot;&lt;&lt;endl;
    }

    memset(&amp;addr, 0, sizeof(SOCKADDR_IN));
    addr.sin_family=AF_INET;
    addr.sin_port=htons(12345);
    //addr.sin_addr.s_addr=inet_addr(&quot;127.0.0.1&quot;);
    rc=getAddrFromString(&quot;79.207.121.176&quot;, &amp;addr);
    if(rc==SOCKET_ERROR)
    {
        cout&lt;&lt;&quot;hat nich geklappt, fehlercode: &quot;&lt;&lt;WSAGetLastError()&lt;&lt;endl;
    }
    else
    {
        cout&lt;&lt;&quot;Das dings is erfolgreich&quot;&lt;&lt;endl;
    }

    rc=connect(s,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR));
    if(rc==SOCKET_ERROR)
    {
        cout&lt;&lt;&quot;verbinden gescheitert, Fehler: &quot;&lt;&lt;WSAGetLastError()&lt;&lt;endl;
    }
    else
    {
        cout&lt;&lt;&quot;Verbunden mit &quot;&lt;&lt;addr.sin_addr.s_addr&lt;&lt;endl;
    }

    while(rc!=SOCKET_ERROR)
  {
    printf(&quot;\nZeichenfolge eingeben [max 256]: &quot;);
    gets(buf);
    send(s,buf,strlen(buf),0);
    rc=recv(s,buf,256,0);
    if(rc==0)
    {
      printf(&quot;Server hat die Verbindung getrennt..\n&quot;);
      break;
    }
    if(rc==SOCKET_ERROR)
    {
      printf(&quot;Fehler: recv, fehler code: %d\n&quot;,WSAGetLastError());
      break;
    }
    buf[rc]='\0';
    printf(&quot;\nServer antwortet: %s\n&quot;,buf);
    }
    closesocket(s);
    WSACleanup();

    cout&lt;&lt;&quot;Verbindung unterbrochen&quot;&lt;&lt;endl;
    system(&quot;pause&quot;);

    return 0;
}

int startWinsock()

{

  WSADATA wsa;

  return WSAStartup(MAKEWORD(2,0),&amp;wsa);
}

long getAddrFromString(char* hostnameOrIp, SOCKADDR_IN* addr)

{

  long rc;

  unsigned long ip;

  HOSTENT* he;

  /* Parameter prüfen */

  if(hostnameOrIp==NULL || addr==NULL) return SOCKET_ERROR;

  /* eine IP in hostnameOrIp ? */

  ip=inet_addr(hostnameOrIp);

  /* bei einem fehler liefert inet_addr den Rückgabewert INADDR_NONE */

  if(ip!=INADDR_NONE)

  {

    addr-&gt;sin_addr.s_addr=ip;

    return 0;

  }

  else

  {

    /* Hostname in hostnameOrIp auflösen */

    he=gethostbyname(hostnameOrIp);

    if(he==NULL)

    {

      return SOCKET_ERROR;

    }

    else

    {

      /*die 4 Bytes der IP von he nach addr kopieren */

      memcpy(&amp;(addr-&gt;sin_addr),he-&gt;h_addr_list[0],4);

    }

    return 0;

  }

}
</code></pre>
<p>würd mich freuen wenn ihr mir helfen könntet <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>
<p>MfG Daniel</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/235360/problem-mit-sockets</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Apr 2026 11:23:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/235360.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 28 Feb 2009 21:39:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to problem mit sockets on Sat, 28 Feb 2009 21:39:45 GMT]]></title><description><![CDATA[<p>Hi Leute</p>
<p>ich hab jetzt im Internet son schönes Tutorial über Sockets gefunden, das sogar ich halbwegs versteh. Das ganze hab ich kompiliert und ausgeführt, hat auch auf meinem eigenen PC super geklappt. Dann hab ich das mal nem Freund geschickt, um zu schaun, ob das auch übers Internet geht, und es hat leider nich geklappt =(. Jetzt wüsst ich gerne warum und hoff ihr könnt mir dabei helfen ^^<br />
Hier mal der quellcode:<br />
Server:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include&lt;winsock2.h&gt;
#include&lt;windows.h&gt;

using namespace std;

int startWinsock();
long getAddrFromString(char* hostnameOrIp, SOCKADDR_IN* addr);

SOCKET s;
SOCKET connectedSocket;
SOCKADDR_IN addr;
char buf[256];
char buf2[256];

int main()
{
    int rc;
    rc=startWinsock();
    if(rc!=0)
    {
        cout&lt;&lt;&quot;Winsock nicht gestartet&quot;&lt;&lt;endl;
    }
    else
    {
        cout&lt;&lt;&quot;Winsock gestartet&quot;&lt;&lt;endl;
    }

    s=socket(AF_INET, SOCK_STREAM, 0);
    if(s==INVALID_SOCKET)
    {
        cout&lt;&lt;&quot;Socket wurde nicht erstellt, Fehler: &quot;&lt;&lt;WSAGetLastError()&lt;&lt;endl;
    }
    else
    {
        cout&lt;&lt;&quot;Socket wurde erstellt&quot;&lt;&lt;endl;
    }

    memset(&amp;addr, 0, sizeof(SOCKADDR_IN));

    addr.sin_family=AF_INET;
    addr.sin_port=htons(12345);
    addr.sin_addr.s_addr=ADDR_ANY;

    rc=bind(s,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR_IN));

    if(rc==SOCKET_ERROR)
    {
        cout&lt;&lt;&quot;Fehler bing, Fehlercode: &quot;&lt;&lt;WSAGetLastError()&lt;&lt;endl;
    }
    else
    {
        cout&lt;&lt;&quot;Socket an Port &quot;&lt;&lt;addr.sin_port&lt;&lt;&quot; gebunden&quot;&lt;&lt;endl;
    }

    rc=listen(s, 10);
    if(rc==SOCKET_ERROR)
    {
        cout&lt;&lt;&quot;Fehler: listen, fehlercode: &quot;&lt;&lt;WSAGetLastError()&lt;&lt;endl;
    }
    else
    {
        cout&lt;&lt;&quot;Socket ist im Listen-Modus&quot;&lt;&lt;endl;
    }

    connectedSocket=accept(s,NULL,NULL);

    if(connectedSocket==INVALID_SOCKET)

    {

      cout&lt;&lt;&quot;Fehler accept, fehlerdoce: &quot;&lt;&lt;WSAGetLastError()&lt;&lt;endl;

      return 1;

    }

    else

    {

      cout&lt;&lt;&quot;Neue Verbindung akzeptiert&quot;&lt;&lt;endl;

    }

    while(rc!=SOCKET_ERROR)
  {
    rc=recv(connectedSocket,buf,256,0);
    if(rc==0)
    {
      printf(&quot;Server hat die Verbindung getrennt..\n&quot;);
      break;
    }
    if(rc==SOCKET_ERROR)
    {
      printf(&quot;Fehler: recv, fehler code: %d\n&quot;,WSAGetLastError());
      break;
    }
    buf[rc]='\0';
    printf(&quot;Client sendet: %s\n&quot;,buf);
    sprintf(buf2,&quot;Du mich auch %s&quot;,buf);
    rc=send(connectedSocket,buf2,strlen(buf2),0);
    }
    closesocket(s);
    closesocket(connectedSocket);
    WSACleanup();

    cout&lt;&lt;&quot;Verbindung unterbrochen&quot;&lt;&lt;endl;
    system(&quot;pause&quot;);

    return 0;
}

int startWinsock()

{

  WSADATA wsa;

  return WSAStartup(MAKEWORD(2,0),&amp;wsa);
}

long getAddrFromString(char* hostnameOrIp, SOCKADDR_IN* addr)

{

  long rc;

  unsigned long ip;

  HOSTENT* he;

  /* Parameter prüfen */

  if(hostnameOrIp==NULL || addr==NULL) return SOCKET_ERROR;

  /* eine IP in hostnameOrIp ? */

  ip=inet_addr(hostnameOrIp);

  /* bei einem fehler liefert inet_addr den Rückgabewert INADDR_NONE */

  if(ip!=INADDR_NONE)

  {

    addr-&gt;sin_addr.s_addr=ip;

    return 0;

  }

  else

  {

    /* Hostname in hostnameOrIp auflösen */

    he=gethostbyname(hostnameOrIp);

    if(he==NULL)

    {

      return SOCKET_ERROR;

    }

    else

    {

      /*die 4 Bytes der IP von he nach addr kopieren */

      memcpy(&amp;(addr-&gt;sin_addr),he-&gt;h_addr_list[0],4);

    }

    return 0;

  }

}
</code></pre>
<p>und der client:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include&lt;winsock2.h&gt;
#include&lt;windows.h&gt;

using namespace std;

int startWinsock();
long getAddrFromString(char* hostnameOrIp, SOCKADDR_IN* addr);

SOCKET s;
SOCKADDR_IN addr;
char buf[256];

int main()
{
    int rc=0;
    rc=startWinsock();
    if(rc!=0)
    {
        cout&lt;&lt;&quot;Winsock nicht gestartet&quot;&lt;&lt;endl;
    }
    else
    {
        cout&lt;&lt;&quot;Winsock gestartet&quot;&lt;&lt;endl;
    }

    s=socket(AF_INET, SOCK_STREAM, 0);
    if(s==INVALID_SOCKET)
    {
        cout&lt;&lt;&quot;Socket wurde nicht erstellt, Fehler: &quot;&lt;&lt;WSAGetLastError()&lt;&lt;endl;
    }
    else
    {
        cout&lt;&lt;&quot;Socket wurde erstellt&quot;&lt;&lt;endl;
    }

    memset(&amp;addr, 0, sizeof(SOCKADDR_IN));
    addr.sin_family=AF_INET;
    addr.sin_port=htons(12345);
    //addr.sin_addr.s_addr=inet_addr(&quot;127.0.0.1&quot;);
    rc=getAddrFromString(&quot;79.207.121.176&quot;, &amp;addr);
    if(rc==SOCKET_ERROR)
    {
        cout&lt;&lt;&quot;hat nich geklappt, fehlercode: &quot;&lt;&lt;WSAGetLastError()&lt;&lt;endl;
    }
    else
    {
        cout&lt;&lt;&quot;Das dings is erfolgreich&quot;&lt;&lt;endl;
    }

    rc=connect(s,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR));
    if(rc==SOCKET_ERROR)
    {
        cout&lt;&lt;&quot;verbinden gescheitert, Fehler: &quot;&lt;&lt;WSAGetLastError()&lt;&lt;endl;
    }
    else
    {
        cout&lt;&lt;&quot;Verbunden mit &quot;&lt;&lt;addr.sin_addr.s_addr&lt;&lt;endl;
    }

    while(rc!=SOCKET_ERROR)
  {
    printf(&quot;\nZeichenfolge eingeben [max 256]: &quot;);
    gets(buf);
    send(s,buf,strlen(buf),0);
    rc=recv(s,buf,256,0);
    if(rc==0)
    {
      printf(&quot;Server hat die Verbindung getrennt..\n&quot;);
      break;
    }
    if(rc==SOCKET_ERROR)
    {
      printf(&quot;Fehler: recv, fehler code: %d\n&quot;,WSAGetLastError());
      break;
    }
    buf[rc]='\0';
    printf(&quot;\nServer antwortet: %s\n&quot;,buf);
    }
    closesocket(s);
    WSACleanup();

    cout&lt;&lt;&quot;Verbindung unterbrochen&quot;&lt;&lt;endl;
    system(&quot;pause&quot;);

    return 0;
}

int startWinsock()

{

  WSADATA wsa;

  return WSAStartup(MAKEWORD(2,0),&amp;wsa);
}

long getAddrFromString(char* hostnameOrIp, SOCKADDR_IN* addr)

{

  long rc;

  unsigned long ip;

  HOSTENT* he;

  /* Parameter prüfen */

  if(hostnameOrIp==NULL || addr==NULL) return SOCKET_ERROR;

  /* eine IP in hostnameOrIp ? */

  ip=inet_addr(hostnameOrIp);

  /* bei einem fehler liefert inet_addr den Rückgabewert INADDR_NONE */

  if(ip!=INADDR_NONE)

  {

    addr-&gt;sin_addr.s_addr=ip;

    return 0;

  }

  else

  {

    /* Hostname in hostnameOrIp auflösen */

    he=gethostbyname(hostnameOrIp);

    if(he==NULL)

    {

      return SOCKET_ERROR;

    }

    else

    {

      /*die 4 Bytes der IP von he nach addr kopieren */

      memcpy(&amp;(addr-&gt;sin_addr),he-&gt;h_addr_list[0],4);

    }

    return 0;

  }

}
</code></pre>
<p>würd mich freuen wenn ihr mir helfen könntet <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>
<p>MfG Daniel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1672184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1672184</guid><dc:creator><![CDATA[killmichnich]]></dc:creator><pubDate>Sat, 28 Feb 2009 21:39:45 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit sockets on Sat, 28 Feb 2009 22:02:53 GMT]]></title><description><![CDATA[<p>Du musst höchstwahrscheinlich den entsprechende Port in der NAT-Firewall deines Freundes auf seinen PC weiterleiten.</p>
<p>Les dir mal was zu den Grundlagen von Netzwerken (und vor allem Routern) durch.</p>
<p>Der Code ist mir zu lang als das ich nur einen flüchtigen Blick drauf werfen würde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1672191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1672191</guid><dc:creator><![CDATA[The-Kenny]]></dc:creator><pubDate>Sat, 28 Feb 2009 22:02:53 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit sockets on Sun, 01 Mar 2009 09:40:49 GMT]]></title><description><![CDATA[<p>warum einfach wenns auch kompliziert geht ... daran hab ich jetz garnich gedacht thx ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1672286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1672286</guid><dc:creator><![CDATA[killmichnich]]></dc:creator><pubDate>Sun, 01 Mar 2009 09:40:49 GMT</pubDate></item></channel></rss>