<?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[Server soll befehle ausführen]]></title><description><![CDATA[<p>Hey folgendes ich hab mir einen client und einen server gebastelt mit dem code aus nem tut und nun hab ich zwei probleme 1. wie krieg ich hin das man beim client die ip des servers angibt und 2. soll zb wenn ich eine 1 sende der server den befehl unter 1 bei einem switch ausführen... beides funzt aber net</p>
<p>hier mal der client</p>
<pre><code>#include &lt;windows.h&gt;
#include &lt;winsock2.h&gt;
#include &lt;stdio.h&gt;

//Prototypen
int startWinsock(void);
char serverip[20];

int main()
{
  long rc;
  SOCKET s;
  SOCKADDR_IN addr;
  char buf[256];
  char ip;

  printf(&quot;Bitte Ziel-IP eingeben: &quot;);
   scanf(&quot;%c&quot;,&amp;ip);
   fflush(stdin);

  // Winsock starten
  rc=startWinsock();
  if(rc!=0)
  {
    printf(&quot;Fehler: startWinsock, fehler code: %d\n&quot;,rc);
    return 1;
  }
  else
  {
    printf(&quot;Winsock gestartet!\n&quot;);
  }

  // Socket erstellen
  s=socket(AF_INET,SOCK_STREAM,0);
  if(s==INVALID_SOCKET)
  {
    printf(&quot;Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n&quot;,WSAGetLastError());
    return 1;
  }
  else
  {
    printf(&quot;Socket erstellt!\n&quot;);
  }

  // Verbinden
  memset(&amp;addr,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten
  addr.sin_family=AF_INET;
  addr.sin_port=htons(12345); // wir verwenden mal port 12345
  addr.sin_addr.s_addr=inet_addr(&quot;127.0.0.1&quot;); 

 /* Was muss ich nun anstatt &quot;127.0.0.1&quot; eingeben.. hab ja schon ne abfrage der ip am anfang mit char*/

  rc=connect(s,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR));
  if(rc==SOCKET_ERROR)
  {
    printf(&quot;Fehler: connect gescheitert, fehler code: %d\n&quot;,WSAGetLastError());
    return 1;
  }
  else
  {
    printf(&quot;Verbunden mit %c \n&quot;,ip);
  }

  // Daten austauschen
  while(rc!=SOCKET_ERROR)
  {
    printf(&quot;\nBitte Befehl eingeben: &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();
  return 0;
}

int startWinsock(void)
{
  WSADATA wsa;
  return WSAStartup(MAKEWORD(2,0),&amp;wsa);
}
</code></pre>
<p>und hier mal der server</p>
<pre><code>#include &lt;windows.h&gt;
#include &lt;winsock2.h&gt;
#include &lt;stdio.h&gt;

//Prototypen
int startWinsock(void);

int main()
{
  long rc;
  SOCKET acceptSocket;
  SOCKET connectedSocket;
  SOCKADDR_IN addr;
  char buf[256];
  char buf2[300];

  // Winsock starten
  rc=startWinsock();
  if(rc!=0)
  {
    printf(&quot;Fehler: startWinsock, fehler code: %d\n&quot;,rc);
    return 1;
  }
  else
  {
    printf(&quot;Winsock gestartet!\n&quot;);
  }

  // Socket erstellen
  acceptSocket=socket(AF_INET,SOCK_STREAM,0);
  if(acceptSocket==INVALID_SOCKET)
  {
    printf(&quot;Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n&quot;,WSAGetLastError());
    return 1;
  }
  else
  {
    printf(&quot;Socket erstellt!\n&quot;);
  }

  // Socket binden
  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(acceptSocket,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR_IN));
  if(rc==SOCKET_ERROR)
  {
    printf(&quot;Fehler: bind, fehler code: %d\n&quot;,WSAGetLastError());
    return 1;
  }
  else
  {
    printf(&quot;Socket an port 12345 gebunden\n&quot;);
  }

  // In den listen Modus
  rc=listen(acceptSocket,10);
  if(rc==SOCKET_ERROR)
  {
    printf(&quot;Fehler: listen, fehler code: %d\n&quot;,WSAGetLastError());
    return 1;
  }
  else
  {
    printf(&quot;acceptSocket ist im listen Modus....\n&quot;);
  }

  // Verbindung annehmen
  connectedSocket=accept(acceptSocket,NULL,NULL);
  if(connectedSocket==INVALID_SOCKET)
  {
    printf(&quot;Fehler: accept, fehler code: %d\n&quot;,WSAGetLastError());
    return 1;
  }
  else
  {
    printf(&quot;Neue Verbindung wurde akzeptiert!\n&quot;);
  }

  // Daten austauschen
  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);

      switch(buf) {

      case 8 :  printf(&quot;\n PC wird heruntergefahren \n\n&quot;);
                system(&quot;C:\\WINDOWS\\System32\\shutdown.exe -s -f -t 0 &quot;);  
                break;                                 

      case 9 :  printf(&quot;\n Programm wird beendet \n&quot;);      break;

      default:  printf(&quot;\n Unbekannte Auswahl \n\n&quot;);
      }
    sprintf(buf2,&quot;Du mich auch %s&quot;,buf);
    rc=send(connectedSocket,buf2,strlen(buf2),0);
  }
  closesocket(acceptSocket);
  closesocket(connectedSocket);
  WSACleanup();
  return 0;
}

int startWinsock(void)
{
  WSADATA wsa;
  return WSAStartup(MAKEWORD(2,0),&amp;wsa);
}
</code></pre>
<p>Ich benutz win xp und borland compiler... und beim kompilieren vom server krieg ich den fehler das ich integer beim switch brauch.. und wenn ich zb case 'asd' nehme um auf char zuzugreifen gibts noch mehr fehler...</p>
<p>ich denk mir die variable buf passt halt net aber wie und vorallem kann ich die passend umformatieren</p>
<p>ich hoffe ma ihr könnt mir helfen weil ich hab echt keinen plan was ich noch mahcen soll... hab schon seit stunden daran rumgebastelt aber des will einfach funzen</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/238443/server-soll-befehle-ausführen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 00:49:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/238443.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 10 Apr 2009 15:48:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Server soll befehle ausführen on Fri, 10 Apr 2009 15:48:11 GMT]]></title><description><![CDATA[<p>Hey folgendes ich hab mir einen client und einen server gebastelt mit dem code aus nem tut und nun hab ich zwei probleme 1. wie krieg ich hin das man beim client die ip des servers angibt und 2. soll zb wenn ich eine 1 sende der server den befehl unter 1 bei einem switch ausführen... beides funzt aber net</p>
<p>hier mal der client</p>
<pre><code>#include &lt;windows.h&gt;
#include &lt;winsock2.h&gt;
#include &lt;stdio.h&gt;

//Prototypen
int startWinsock(void);
char serverip[20];

int main()
{
  long rc;
  SOCKET s;
  SOCKADDR_IN addr;
  char buf[256];
  char ip;

  printf(&quot;Bitte Ziel-IP eingeben: &quot;);
   scanf(&quot;%c&quot;,&amp;ip);
   fflush(stdin);

  // Winsock starten
  rc=startWinsock();
  if(rc!=0)
  {
    printf(&quot;Fehler: startWinsock, fehler code: %d\n&quot;,rc);
    return 1;
  }
  else
  {
    printf(&quot;Winsock gestartet!\n&quot;);
  }

  // Socket erstellen
  s=socket(AF_INET,SOCK_STREAM,0);
  if(s==INVALID_SOCKET)
  {
    printf(&quot;Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n&quot;,WSAGetLastError());
    return 1;
  }
  else
  {
    printf(&quot;Socket erstellt!\n&quot;);
  }

  // Verbinden
  memset(&amp;addr,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten
  addr.sin_family=AF_INET;
  addr.sin_port=htons(12345); // wir verwenden mal port 12345
  addr.sin_addr.s_addr=inet_addr(&quot;127.0.0.1&quot;); 

 /* Was muss ich nun anstatt &quot;127.0.0.1&quot; eingeben.. hab ja schon ne abfrage der ip am anfang mit char*/

  rc=connect(s,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR));
  if(rc==SOCKET_ERROR)
  {
    printf(&quot;Fehler: connect gescheitert, fehler code: %d\n&quot;,WSAGetLastError());
    return 1;
  }
  else
  {
    printf(&quot;Verbunden mit %c \n&quot;,ip);
  }

  // Daten austauschen
  while(rc!=SOCKET_ERROR)
  {
    printf(&quot;\nBitte Befehl eingeben: &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();
  return 0;
}

int startWinsock(void)
{
  WSADATA wsa;
  return WSAStartup(MAKEWORD(2,0),&amp;wsa);
}
</code></pre>
<p>und hier mal der server</p>
<pre><code>#include &lt;windows.h&gt;
#include &lt;winsock2.h&gt;
#include &lt;stdio.h&gt;

//Prototypen
int startWinsock(void);

int main()
{
  long rc;
  SOCKET acceptSocket;
  SOCKET connectedSocket;
  SOCKADDR_IN addr;
  char buf[256];
  char buf2[300];

  // Winsock starten
  rc=startWinsock();
  if(rc!=0)
  {
    printf(&quot;Fehler: startWinsock, fehler code: %d\n&quot;,rc);
    return 1;
  }
  else
  {
    printf(&quot;Winsock gestartet!\n&quot;);
  }

  // Socket erstellen
  acceptSocket=socket(AF_INET,SOCK_STREAM,0);
  if(acceptSocket==INVALID_SOCKET)
  {
    printf(&quot;Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n&quot;,WSAGetLastError());
    return 1;
  }
  else
  {
    printf(&quot;Socket erstellt!\n&quot;);
  }

  // Socket binden
  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(acceptSocket,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR_IN));
  if(rc==SOCKET_ERROR)
  {
    printf(&quot;Fehler: bind, fehler code: %d\n&quot;,WSAGetLastError());
    return 1;
  }
  else
  {
    printf(&quot;Socket an port 12345 gebunden\n&quot;);
  }

  // In den listen Modus
  rc=listen(acceptSocket,10);
  if(rc==SOCKET_ERROR)
  {
    printf(&quot;Fehler: listen, fehler code: %d\n&quot;,WSAGetLastError());
    return 1;
  }
  else
  {
    printf(&quot;acceptSocket ist im listen Modus....\n&quot;);
  }

  // Verbindung annehmen
  connectedSocket=accept(acceptSocket,NULL,NULL);
  if(connectedSocket==INVALID_SOCKET)
  {
    printf(&quot;Fehler: accept, fehler code: %d\n&quot;,WSAGetLastError());
    return 1;
  }
  else
  {
    printf(&quot;Neue Verbindung wurde akzeptiert!\n&quot;);
  }

  // Daten austauschen
  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);

      switch(buf) {

      case 8 :  printf(&quot;\n PC wird heruntergefahren \n\n&quot;);
                system(&quot;C:\\WINDOWS\\System32\\shutdown.exe -s -f -t 0 &quot;);  
                break;                                 

      case 9 :  printf(&quot;\n Programm wird beendet \n&quot;);      break;

      default:  printf(&quot;\n Unbekannte Auswahl \n\n&quot;);
      }
    sprintf(buf2,&quot;Du mich auch %s&quot;,buf);
    rc=send(connectedSocket,buf2,strlen(buf2),0);
  }
  closesocket(acceptSocket);
  closesocket(connectedSocket);
  WSACleanup();
  return 0;
}

int startWinsock(void)
{
  WSADATA wsa;
  return WSAStartup(MAKEWORD(2,0),&amp;wsa);
}
</code></pre>
<p>Ich benutz win xp und borland compiler... und beim kompilieren vom server krieg ich den fehler das ich integer beim switch brauch.. und wenn ich zb case 'asd' nehme um auf char zuzugreifen gibts noch mehr fehler...</p>
<p>ich denk mir die variable buf passt halt net aber wie und vorallem kann ich die passend umformatieren</p>
<p>ich hoffe ma ihr könnt mir helfen weil ich hab echt keinen plan was ich noch mahcen soll... hab schon seit stunden daran rumgebastelt aber des will einfach funzen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1694030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1694030</guid><dc:creator><![CDATA[c&#x2F;c++ neuling]]></dc:creator><pubDate>Fri, 10 Apr 2009 15:48:11 GMT</pubDate></item><item><title><![CDATA[Reply to Server soll befehle ausführen on Fri, 10 Apr 2009 15:49:32 GMT]]></title><description><![CDATA[<p>sry ich hab leider doppelt gepostet un nun sin 2 gleiche threads auf</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1694031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1694031</guid><dc:creator><![CDATA[c&#x2F;c++ neuling]]></dc:creator><pubDate>Fri, 10 Apr 2009 15:49:32 GMT</pubDate></item><item><title><![CDATA[Reply to Server soll befehle ausführen on Fri, 10 Apr 2009 15:53:57 GMT]]></title><description><![CDATA[<p>c/c++ neuling schrieb:</p>
<blockquote>
<p>sry ich hab leider doppelt gepostet un nun sin 2 gleiche threads auf</p>
</blockquote>
<p>und im falschen forum biste auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1694034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1694034</guid><dc:creator><![CDATA[c ist nebenan]]></dc:creator><pubDate>Fri, 10 Apr 2009 15:53:57 GMT</pubDate></item></channel></rss>