<?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 vom client ausführen]]></title><description><![CDATA[<p>So jetz bin ich im richtigen forum^^</p>
<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 ma 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, dev c++ 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/238445/server-soll-befehle-vom-client-ausführen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 06 Apr 2026 22:04:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/238445.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 10 Apr 2009 16:21:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to server soll befehle vom client ausführen on Fri, 10 Apr 2009 16:21:33 GMT]]></title><description><![CDATA[<p>So jetz bin ich im richtigen forum^^</p>
<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 ma 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, dev c++ 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/1694051</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1694051</guid><dc:creator><![CDATA[c neuling]]></dc:creator><pubDate>Fri, 10 Apr 2009 16:21:33 GMT</pubDate></item><item><title><![CDATA[Reply to server soll befehle vom client ausführen on Fri, 10 Apr 2009 17:27:11 GMT]]></title><description><![CDATA[<p>das ist doch reines c - ich seh da auf die schnelle nichtmal c++ elemente geschweige denn c#<br />
=&gt; falsches forum</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1694085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1694085</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Fri, 10 Apr 2009 17:27:11 GMT</pubDate></item><item><title><![CDATA[Reply to server soll befehle vom client ausführen on Fri, 10 Apr 2009 22:16:19 GMT]]></title><description><![CDATA[<p>wie bissn du hier gelandet??</p>
<p>versuchs im WinApi-Forum nochmal (lass dich verschieben, bitte nicht noch ein thread <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><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/869">@c</a> neuling: guck mal im c++ forum nach antworten</p>
<p>@mods: den c++ thread verschieben, den hier vllt löschen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1694187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1694187</guid><dc:creator><![CDATA[helferlein]]></dc:creator><pubDate>Fri, 10 Apr 2009 22:16:19 GMT</pubDate></item><item><title><![CDATA[Reply to server soll befehle vom client ausführen on Sat, 11 Apr 2009 03:52:31 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-275.html" rel="nofollow">Unix-Tom</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-28.html" rel="nofollow">C# und .NET</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/1694232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1694232</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Sat, 11 Apr 2009 03:52:31 GMT</pubDate></item><item><title><![CDATA[Reply to server soll befehle vom client ausführen on Sat, 11 Apr 2009 09:02:37 GMT]]></title><description><![CDATA[<p>Im switch Statement hast du einen char* und bei case int.<br />
Du musst den buffer also erst in ein int umwandeln z. B. mit der Funktion atoi.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1694278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1694278</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 11 Apr 2009 09:02:37 GMT</pubDate></item><item><title><![CDATA[Reply to server soll befehle vom client ausführen on Sat, 11 Apr 2009 09:58:28 GMT]]></title><description><![CDATA[<p>Mal grundsätzlich die Frage: Warum schreibst Du überhaupt so ein komisches Programm, wenn SHUTDOWN.EXE auch andere Rechner direkt Remote herunterfahren kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1694306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1694306</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Sat, 11 Apr 2009 09:58:28 GMT</pubDate></item><item><title><![CDATA[Reply to server soll befehle vom client ausführen on Sat, 11 Apr 2009 10:35:09 GMT]]></title><description><![CDATA[<p>Das hört sich für mich ja etwas nach einem Trojaner an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1694339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1694339</guid><dc:creator><![CDATA[EOP]]></dc:creator><pubDate>Sat, 11 Apr 2009 10:35:09 GMT</pubDate></item></channel></rss>