<?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[Winsock Server über Internet erreichen]]></title><description><![CDATA[<p>Hallo ich hab einen Winsock Server und einen Client dazu.</p>
<p>Wenn ich den Server starte kann ich ihn über die PC IP 127.0.0.1 erreichen was aber wenn ich den Server über meine Internet IP ansprechen will ?</p>
<p>Was muss man da machen damit das funktioniert ?</p>
<p>Client:</p>
<pre><code class="language-cpp">//Client

#include &lt;windows.h&gt; //Required for socket init
#include &lt;iostream&gt;
using namespace std;

//Client

int main()

{

char buf2[256];

string ip;
long rc;
char buf[256];
int nret;

SOCKET kSock;

WSAData wsdata; 
WORD wsver=MAKEWORD(2, 0);

nret=WSAStartup(wsver, &amp;wsdata);

		if(nret != 0)
		{
		cout&lt;&lt;&quot;Startup failed, error code: &quot;&lt;&lt;WSAGetLastError();
		WSACleanup();
		return -1;
		}

cout&lt;&lt;&quot;Init success\n&quot;;
	 kSock=socket(AF_INET, SOCK_STREAM, 0);

		if(kSock == INVALID_SOCKET)
		{
		cout&lt;&lt;&quot;Socket init failed&quot;;
		return -1;
		}

cout&lt;&lt;&quot;Socket initialized\n&quot;;

cout&lt;&lt;&quot;IP eingeben: &quot;;
cin&gt;&gt;ip;

sockaddr_in sin;
sin.sin_port=htons(12345);
sin.sin_addr.s_addr=inet_addr( ip.c_str() );
sin.sin_family=AF_INET;

	 rc = connect(kSock,(sockaddr*)&amp;sin, sizeof(sin));

	   if(rc==SOCKET_ERROR)
			{ //Check the condition
			cout&lt;&lt;&quot;Connect failed, error: &quot;&lt;&lt;WSAGetLastError(); //Returns error code
			WSACleanup();
			return -1;
			}

	else
	{
	cout&lt;&lt;&quot;Connection successful!\n&quot;;
	}

 while(rc!=SOCKET_ERROR)
  {
   cout&lt;&lt;&quot;\nZeichenfolge eingeben [max 256]: &quot;;
   cin&gt;&gt;buf;
   send(kSock,buf,strlen(buf),0);

   recv(kSock, buf2, strlen(buf2), 0);
   cout&lt;&lt;&quot;Server Antwortet: &quot;&lt;&lt;buf2;

   }

	rc=recv(kSock,buf,256,0);
	if(rc==0)
        {
	  cout&lt;&lt;&quot;Server hat die Verbindung getrennt..\n&quot;;
	  return 0;
	  return 0;
	}

    if(rc==SOCKET_ERROR)
    {
	  cout&lt;&lt;&quot;Fehler: recv, fehler code: &quot;&lt;&lt;WSAGetLastError();
	 return 0;
	  return 0;
	}

           buf[rc]='\0';

closesocket(kSock);
return 0;
}
</code></pre>
<p>Server:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt; //Required for socket init
#include &lt;iostream&gt;
using namespace std;

//server
int main()
{

char buf2[]=&quot;test&quot;;
long rc;
SOCKET kSock;
SOCKET client;
int len;

char buf[256];

WSAData wsdata;
WORD wsver=MAKEWORD(2, 0); //We want Winsock 2.0
int nret=WSAStartup(wsver, &amp;wsdata); //Pass version 2.0 and pointer to implement

		if(nret != 0)
		{
		cout&lt;&lt;&quot;Startup failed, error code: &quot;&lt;&lt;WSAGetLastError();
		WSACleanup();
		return -1;
		}

cout&lt;&lt;&quot;Init success\n&quot;;
kSock=socket(AF_INET, SOCK_STREAM, 0);

		if(kSock == INVALID_SOCKET)
		{
		cout&lt;&lt;&quot;Socket init failed&quot;;
		return -1;
		}

cout&lt;&lt;&quot;Socket initialized\n&quot;;
sockaddr_in sin;
sin.sin_port=htons(12345);
sin.sin_addr.s_addr=INADDR_ANY;
sin.sin_family=AF_INET;

		if(bind(kSock,(sockaddr*)&amp;sin, sizeof(sin)) == SOCKET_ERROR)
		{
		cout&lt;&lt;&quot;Failed to bind\n&quot;;
		WSACleanup();
		return -1;
		}

cout&lt;&lt;&quot;Bind successful!\n&quot;;

  rc=listen(kSock,10);

  if(rc==SOCKET_ERROR)
  {
        cout&lt;&lt;&quot;Error &quot;&lt;&lt;GetLastError();
	system(&quot;PAUSE&quot;);
	return 0;
  }

  else
  {
    cout&lt;&lt;&quot;acceptSocket ist im listen Modus....\n&quot;;
  }

	// Verbindung annehmen
	 client=accept(kSock,NULL,NULL);

	if(client==INVALID_SOCKET)
        {
        cout&lt;&lt;&quot;Fehler: accept, fehler code: &lt;&lt;&quot;&lt;&lt;WSAGetLastError();
	return 1;
	}

	 cout&lt;&lt;&quot;Neue Verbindung wurde akzeptiert!\n&quot;;

   // Daten austauschen
  while(rc!=SOCKET_ERROR)
  {

                       send(client,buf2,strlen(buf2),0);
                       rc=recv(client,buf,256,0);

				if(rc==0)
				{
					cout&lt;&lt;&quot;Server hat die Verbindung getrennt..\n&quot;;
					system(&quot;PAUSE&quot;);
					return 0;
				 }

			if(rc==SOCKET_ERROR)
		        {
			  cout&lt;&lt;&quot;Fehler: recv, fehler code: &quot;&lt;&lt;WSAGetLastError();
			  break;
		       	}

                buf[rc]='\0';

		cout&lt;&lt;&quot;Client sendet: &quot;&lt;&lt;system(buf);
                cout&lt;&lt;&quot;\n&quot;;

  }

closesocket(client); //Close both socket handles
closesocket(kSock);
WSACleanup();
return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/230278/winsock-server-über-internet-erreichen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 11:09:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/230278.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 23 Dec 2008 12:59:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Winsock Server über Internet erreichen on Tue, 23 Dec 2008 12:59:51 GMT]]></title><description><![CDATA[<p>Hallo ich hab einen Winsock Server und einen Client dazu.</p>
<p>Wenn ich den Server starte kann ich ihn über die PC IP 127.0.0.1 erreichen was aber wenn ich den Server über meine Internet IP ansprechen will ?</p>
<p>Was muss man da machen damit das funktioniert ?</p>
<p>Client:</p>
<pre><code class="language-cpp">//Client

#include &lt;windows.h&gt; //Required for socket init
#include &lt;iostream&gt;
using namespace std;

//Client

int main()

{

char buf2[256];

string ip;
long rc;
char buf[256];
int nret;

SOCKET kSock;

WSAData wsdata; 
WORD wsver=MAKEWORD(2, 0);

nret=WSAStartup(wsver, &amp;wsdata);

		if(nret != 0)
		{
		cout&lt;&lt;&quot;Startup failed, error code: &quot;&lt;&lt;WSAGetLastError();
		WSACleanup();
		return -1;
		}

cout&lt;&lt;&quot;Init success\n&quot;;
	 kSock=socket(AF_INET, SOCK_STREAM, 0);

		if(kSock == INVALID_SOCKET)
		{
		cout&lt;&lt;&quot;Socket init failed&quot;;
		return -1;
		}

cout&lt;&lt;&quot;Socket initialized\n&quot;;

cout&lt;&lt;&quot;IP eingeben: &quot;;
cin&gt;&gt;ip;

sockaddr_in sin;
sin.sin_port=htons(12345);
sin.sin_addr.s_addr=inet_addr( ip.c_str() );
sin.sin_family=AF_INET;

	 rc = connect(kSock,(sockaddr*)&amp;sin, sizeof(sin));

	   if(rc==SOCKET_ERROR)
			{ //Check the condition
			cout&lt;&lt;&quot;Connect failed, error: &quot;&lt;&lt;WSAGetLastError(); //Returns error code
			WSACleanup();
			return -1;
			}

	else
	{
	cout&lt;&lt;&quot;Connection successful!\n&quot;;
	}

 while(rc!=SOCKET_ERROR)
  {
   cout&lt;&lt;&quot;\nZeichenfolge eingeben [max 256]: &quot;;
   cin&gt;&gt;buf;
   send(kSock,buf,strlen(buf),0);

   recv(kSock, buf2, strlen(buf2), 0);
   cout&lt;&lt;&quot;Server Antwortet: &quot;&lt;&lt;buf2;

   }

	rc=recv(kSock,buf,256,0);
	if(rc==0)
        {
	  cout&lt;&lt;&quot;Server hat die Verbindung getrennt..\n&quot;;
	  return 0;
	  return 0;
	}

    if(rc==SOCKET_ERROR)
    {
	  cout&lt;&lt;&quot;Fehler: recv, fehler code: &quot;&lt;&lt;WSAGetLastError();
	 return 0;
	  return 0;
	}

           buf[rc]='\0';

closesocket(kSock);
return 0;
}
</code></pre>
<p>Server:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt; //Required for socket init
#include &lt;iostream&gt;
using namespace std;

//server
int main()
{

char buf2[]=&quot;test&quot;;
long rc;
SOCKET kSock;
SOCKET client;
int len;

char buf[256];

WSAData wsdata;
WORD wsver=MAKEWORD(2, 0); //We want Winsock 2.0
int nret=WSAStartup(wsver, &amp;wsdata); //Pass version 2.0 and pointer to implement

		if(nret != 0)
		{
		cout&lt;&lt;&quot;Startup failed, error code: &quot;&lt;&lt;WSAGetLastError();
		WSACleanup();
		return -1;
		}

cout&lt;&lt;&quot;Init success\n&quot;;
kSock=socket(AF_INET, SOCK_STREAM, 0);

		if(kSock == INVALID_SOCKET)
		{
		cout&lt;&lt;&quot;Socket init failed&quot;;
		return -1;
		}

cout&lt;&lt;&quot;Socket initialized\n&quot;;
sockaddr_in sin;
sin.sin_port=htons(12345);
sin.sin_addr.s_addr=INADDR_ANY;
sin.sin_family=AF_INET;

		if(bind(kSock,(sockaddr*)&amp;sin, sizeof(sin)) == SOCKET_ERROR)
		{
		cout&lt;&lt;&quot;Failed to bind\n&quot;;
		WSACleanup();
		return -1;
		}

cout&lt;&lt;&quot;Bind successful!\n&quot;;

  rc=listen(kSock,10);

  if(rc==SOCKET_ERROR)
  {
        cout&lt;&lt;&quot;Error &quot;&lt;&lt;GetLastError();
	system(&quot;PAUSE&quot;);
	return 0;
  }

  else
  {
    cout&lt;&lt;&quot;acceptSocket ist im listen Modus....\n&quot;;
  }

	// Verbindung annehmen
	 client=accept(kSock,NULL,NULL);

	if(client==INVALID_SOCKET)
        {
        cout&lt;&lt;&quot;Fehler: accept, fehler code: &lt;&lt;&quot;&lt;&lt;WSAGetLastError();
	return 1;
	}

	 cout&lt;&lt;&quot;Neue Verbindung wurde akzeptiert!\n&quot;;

   // Daten austauschen
  while(rc!=SOCKET_ERROR)
  {

                       send(client,buf2,strlen(buf2),0);
                       rc=recv(client,buf,256,0);

				if(rc==0)
				{
					cout&lt;&lt;&quot;Server hat die Verbindung getrennt..\n&quot;;
					system(&quot;PAUSE&quot;);
					return 0;
				 }

			if(rc==SOCKET_ERROR)
		        {
			  cout&lt;&lt;&quot;Fehler: recv, fehler code: &quot;&lt;&lt;WSAGetLastError();
			  break;
		       	}

                buf[rc]='\0';

		cout&lt;&lt;&quot;Client sendet: &quot;&lt;&lt;system(buf);
                cout&lt;&lt;&quot;\n&quot;;

  }

closesocket(client); //Close both socket handles
closesocket(kSock);
WSACleanup();
return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1634618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634618</guid><dc:creator><![CDATA[srv]]></dc:creator><pubDate>Tue, 23 Dec 2008 12:59:51 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock Server über Internet erreichen on Tue, 23 Dec 2008 13:17:32 GMT]]></title><description><![CDATA[<p>srv schrieb:</p>
<blockquote>
<p>Hallo ich hab einen Winsock Server und einen Client dazu.</p>
<p>Wenn ich den Server starte kann ich ihn über die PC IP 127.0.0.1 erreichen was aber wenn ich den Server über meine Internet IP ansprechen will ?</p>
<p>Was muss man da machen damit das funktioniert ?</p>
</blockquote>
<p>Falls Dein Server hinter einem Router sitzt, mußt Du den entsprechenden Port auf die richtige LAN-IP forwarden, falls nicht, mußt Du gar nix machen ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634625</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 23 Dec 2008 13:17:32 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock Server über Internet erreichen on Tue, 23 Dec 2008 13:18:47 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>Falls Dein Server hinter einem Router sitzt, mußt Du den entsprechenden Port auf die richtige LAN-IP forwarden, falls nicht, mußt Du gar nix machen ...</p>
</blockquote>
<p>Vergessen: Falls Du noch eine FireWall - Software auf Deinem Rechner laufen hast, muß diese natürlich auch Anfragen auf dem entsprechenden Port durchlassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634628</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 23 Dec 2008 13:18:47 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock Server über Internet erreichen on Tue, 23 Dec 2008 13:48:43 GMT]]></title><description><![CDATA[<p>ok danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634656</guid><dc:creator><![CDATA[srv]]></dc:creator><pubDate>Tue, 23 Dec 2008 13:48:43 GMT</pubDate></item></channel></rss>