<?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[Hilfe bei Winsock Chat Client von c-worker]]></title><description><![CDATA[<p>Hallo zusammen ich habe mich jetzt ca 1 Woche mit dem Tutorial von c-worker beschäftigt, und auch so gut wie alles Verstanden, jetzt hab ich auf der seite von c-worker einen Chat Client und Server gefunden der server läuft einwand Frei, aber der Client einfach nicht hier der Quellcode:</p>
<pre><code class="language-cpp">#pragma comment( lib, &quot;ws2_32.lib&quot; )

#include &lt;stdlib.h&gt; 
#include &lt;stdio.h&gt; 
#include &lt;winsock2.h&gt; 
#include &lt;conio.h&gt; 

// Startet Winsock und gibt einige Infos zur Version aus 
// Starts winsock and dumps some infos about the version 
int startWinsock() { 
   int rc; 
   WSADATA wsaData; 
   rc=WSAStartup(MAKEWORD(2,0),&amp;wsaData); 
   printf(&quot;Return Code: %d\n&quot;,rc); 
   if(rc==SOCKET_ERROR) { 
      printf(&quot;Error, exiting!\n&quot;); 
      return rc; 
   } 
   printf(&quot;Winsock started:\n&quot;); 
   printf(&quot;Version: %d.%d\n&quot;,LOBYTE(wsaData.wVersion),HIBYTE(wsaData.wVersion)); 
   printf(&quot;High Version: %d.%d\n&quot;,LOBYTE(wsaData.wHighVersion),HIBYTE(wsaData.wHighVersion)); 
   printf(&quot;Description: %s\n&quot;,wsaData.szDescription); 
   printf(&quot;System Status: %s\n&quot;,wsaData.szSystemStatus); 
   return 0; 
} 

// Sucht eine IP anhand eines Strings, der entweder die IP als String 
// oder einen Hostname enthalten kann 
// Searches an IP based on a string, which can contain an IP as string 
// or a hostname 
long getAddrFromString(char* hostnameOrIp, SOCKADDR_IN* addr) { 
   long rc; 
   unsigned long ip; 

   HOSTENT* he; 

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

   if(ip!=INADDR_NONE){ 
      addr-&gt;sin_addr.s_addr=ip; 
      return 0; 
   } else { 
      he=gethostbyname(hostnameOrIp); 
      if(he==NULL) { 
         return SOCKET_ERROR; 
      } else { 
         memcpy(&amp;(addr-&gt;sin_addr),he-&gt;h_addr_list[0],4); 
      } 
      return 0; 
   } 
} 

// main... 
int main(int argc, char** argv) { 

   SOCKET s; 
   SOCKADDR_IN addr; 
   char c; 
   char buf[1024]; 
   char inpBuf[1024]; 
   int inpBufPos=0; 
   fd_set fdSetRead; 
   TIMEVAL timeout; 
   int rc; 

   if(argc&lt;2) { 
      printf(&quot;Usage: chatclient &lt;server&gt;\n&quot;); 
      return 1; 
   } 

   // start winsock 
   rc=startWinsock(); 
   if(rc==SOCKET_ERROR) 
      return 1; 

   // addr vorbereiten, hostname auflösen 
   // prepare addr, resolve hostname 
   memset(&amp;addr,0,sizeof(SOCKADDR_IN)); 
   addr.sin_family=AF_INET; 
   addr.sin_port=htons(1234); 
   rc=getAddrFromString(argv[1],&amp;addr); 
   if(rc==SOCKET_ERROR) { 
      printf(&quot;Error: Cannot resolve Host %s\n&quot;, argv[1]); 
      return 1; 
   } 

   // socket erstellen 
   // create socket 
   s=socket(PF_INET,SOCK_STREAM,0); 
   if(s==INVALID_SOCKET) { 
      printf(&quot;Error, cannot create socket: %d\n&quot;,WSAGetLastError()); 
      return 1; 
   } 

   // verbinden.. 
   // connect.. 
   printf(&quot;Connecting...\n&quot;); 
   rc=connect(s,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR)); 
   if(rc==SOCKET_ERROR) { 
      printf(&quot;Error: connect failed: %d\n&quot;,WSAGetLastError()); 
      return 1; 
   } 

   printf(&quot;\n&quot;); 

   while(rc!=SOCKET_ERROR) { 

      // keyboard input ? 
      while(kbhit()) { 
         c=getch(); 
         if(c==13) { 
            rc=send(s,inpBuf,inpBufPos,0); 
            inpBuf[0]='\0'; 
            inpBufPos=0; 
         } else { 
            inpBuf[inpBufPos++]=c; 
         } 
      } 
      inpBuf[inpBufPos]='\0'; 

      // fd_set und timeout vorbereiten 
      // prepare fd_set and timeout 
      FD_ZERO(&amp;fdSetRead); 
      FD_SET(s,&amp;fdSetRead); 
      timeout.tv_sec=0; 
      timeout.tv_usec=0; 

      // prüfen ob ein socket bereit ist, da timeout=0 kehrt die funktion 
      // sofort wieder zurück nach dem aufruf. 
      // achtung: das timeout auf 0 setzen oder als paremeter NULL mitgeben 
      // ist NICHT das gleiche. auf 0 gesetzt kehrt sofort zurück, während 
      // NULL blockt. 
      // check if any socket is ready (timeout=0, the function returns without delay) 
      while((rc=select(0,&amp;fdSetRead,NULL,NULL,&amp;timeout))&gt;0) { 
            rc=recv(s,buf,1023,0); 
            // server hat die verbindung beendet ? 
            // server closed connection ? 
            if(rc==0) { 
                printf(&quot;Server closed connection!\n&quot;); 
                return 1; 
            // fehler: beenden! 
            // error: abort! 
            } else if(rc==SOCKET_ERROR) { 
                printf(&quot;Error: recv failed: %d\n&quot;,WSAGetLastError()); 
                return 1; 
            } 
            // empfangene daten ausgeben 
            // print received data 
            buf[rc]='\0'; 
            printf(&quot;%s\n&quot;,buf); 
      } 

   } 

   // aufräumen 
   // cleanup.. 
   closesocket(s); 
   WSACleanup(); 
   printf(&quot;Client shutdown, press any key to exit\n&quot;); 
   getch(); 
   return 0; 
}
</code></pre>
<p>Ich kann den Code auch Compelieren aber der Funktioniert einfach nicht. Der kommt nur bis</p>
<pre><code class="language-cpp">if(argc&lt;2) { 
      printf(&quot;Usage: chatclient &lt;server&gt;\n&quot;); 
      return 1; 
   }
</code></pre>
<p>und dan beendet der.</p>
<p>Bitte helft mir!<br />
THX schonmal</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/199748/hilfe-bei-winsock-chat-client-von-c-worker</link><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 19:18:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/199748.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 06 Dec 2007 17:42:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Hilfe bei Winsock Chat Client von c-worker on Thu, 06 Dec 2007 17:42:29 GMT]]></title><description><![CDATA[<p>Hallo zusammen ich habe mich jetzt ca 1 Woche mit dem Tutorial von c-worker beschäftigt, und auch so gut wie alles Verstanden, jetzt hab ich auf der seite von c-worker einen Chat Client und Server gefunden der server läuft einwand Frei, aber der Client einfach nicht hier der Quellcode:</p>
<pre><code class="language-cpp">#pragma comment( lib, &quot;ws2_32.lib&quot; )

#include &lt;stdlib.h&gt; 
#include &lt;stdio.h&gt; 
#include &lt;winsock2.h&gt; 
#include &lt;conio.h&gt; 

// Startet Winsock und gibt einige Infos zur Version aus 
// Starts winsock and dumps some infos about the version 
int startWinsock() { 
   int rc; 
   WSADATA wsaData; 
   rc=WSAStartup(MAKEWORD(2,0),&amp;wsaData); 
   printf(&quot;Return Code: %d\n&quot;,rc); 
   if(rc==SOCKET_ERROR) { 
      printf(&quot;Error, exiting!\n&quot;); 
      return rc; 
   } 
   printf(&quot;Winsock started:\n&quot;); 
   printf(&quot;Version: %d.%d\n&quot;,LOBYTE(wsaData.wVersion),HIBYTE(wsaData.wVersion)); 
   printf(&quot;High Version: %d.%d\n&quot;,LOBYTE(wsaData.wHighVersion),HIBYTE(wsaData.wHighVersion)); 
   printf(&quot;Description: %s\n&quot;,wsaData.szDescription); 
   printf(&quot;System Status: %s\n&quot;,wsaData.szSystemStatus); 
   return 0; 
} 

// Sucht eine IP anhand eines Strings, der entweder die IP als String 
// oder einen Hostname enthalten kann 
// Searches an IP based on a string, which can contain an IP as string 
// or a hostname 
long getAddrFromString(char* hostnameOrIp, SOCKADDR_IN* addr) { 
   long rc; 
   unsigned long ip; 

   HOSTENT* he; 

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

   if(ip!=INADDR_NONE){ 
      addr-&gt;sin_addr.s_addr=ip; 
      return 0; 
   } else { 
      he=gethostbyname(hostnameOrIp); 
      if(he==NULL) { 
         return SOCKET_ERROR; 
      } else { 
         memcpy(&amp;(addr-&gt;sin_addr),he-&gt;h_addr_list[0],4); 
      } 
      return 0; 
   } 
} 

// main... 
int main(int argc, char** argv) { 

   SOCKET s; 
   SOCKADDR_IN addr; 
   char c; 
   char buf[1024]; 
   char inpBuf[1024]; 
   int inpBufPos=0; 
   fd_set fdSetRead; 
   TIMEVAL timeout; 
   int rc; 

   if(argc&lt;2) { 
      printf(&quot;Usage: chatclient &lt;server&gt;\n&quot;); 
      return 1; 
   } 

   // start winsock 
   rc=startWinsock(); 
   if(rc==SOCKET_ERROR) 
      return 1; 

   // addr vorbereiten, hostname auflösen 
   // prepare addr, resolve hostname 
   memset(&amp;addr,0,sizeof(SOCKADDR_IN)); 
   addr.sin_family=AF_INET; 
   addr.sin_port=htons(1234); 
   rc=getAddrFromString(argv[1],&amp;addr); 
   if(rc==SOCKET_ERROR) { 
      printf(&quot;Error: Cannot resolve Host %s\n&quot;, argv[1]); 
      return 1; 
   } 

   // socket erstellen 
   // create socket 
   s=socket(PF_INET,SOCK_STREAM,0); 
   if(s==INVALID_SOCKET) { 
      printf(&quot;Error, cannot create socket: %d\n&quot;,WSAGetLastError()); 
      return 1; 
   } 

   // verbinden.. 
   // connect.. 
   printf(&quot;Connecting...\n&quot;); 
   rc=connect(s,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR)); 
   if(rc==SOCKET_ERROR) { 
      printf(&quot;Error: connect failed: %d\n&quot;,WSAGetLastError()); 
      return 1; 
   } 

   printf(&quot;\n&quot;); 

   while(rc!=SOCKET_ERROR) { 

      // keyboard input ? 
      while(kbhit()) { 
         c=getch(); 
         if(c==13) { 
            rc=send(s,inpBuf,inpBufPos,0); 
            inpBuf[0]='\0'; 
            inpBufPos=0; 
         } else { 
            inpBuf[inpBufPos++]=c; 
         } 
      } 
      inpBuf[inpBufPos]='\0'; 

      // fd_set und timeout vorbereiten 
      // prepare fd_set and timeout 
      FD_ZERO(&amp;fdSetRead); 
      FD_SET(s,&amp;fdSetRead); 
      timeout.tv_sec=0; 
      timeout.tv_usec=0; 

      // prüfen ob ein socket bereit ist, da timeout=0 kehrt die funktion 
      // sofort wieder zurück nach dem aufruf. 
      // achtung: das timeout auf 0 setzen oder als paremeter NULL mitgeben 
      // ist NICHT das gleiche. auf 0 gesetzt kehrt sofort zurück, während 
      // NULL blockt. 
      // check if any socket is ready (timeout=0, the function returns without delay) 
      while((rc=select(0,&amp;fdSetRead,NULL,NULL,&amp;timeout))&gt;0) { 
            rc=recv(s,buf,1023,0); 
            // server hat die verbindung beendet ? 
            // server closed connection ? 
            if(rc==0) { 
                printf(&quot;Server closed connection!\n&quot;); 
                return 1; 
            // fehler: beenden! 
            // error: abort! 
            } else if(rc==SOCKET_ERROR) { 
                printf(&quot;Error: recv failed: %d\n&quot;,WSAGetLastError()); 
                return 1; 
            } 
            // empfangene daten ausgeben 
            // print received data 
            buf[rc]='\0'; 
            printf(&quot;%s\n&quot;,buf); 
      } 

   } 

   // aufräumen 
   // cleanup.. 
   closesocket(s); 
   WSACleanup(); 
   printf(&quot;Client shutdown, press any key to exit\n&quot;); 
   getch(); 
   return 0; 
}
</code></pre>
<p>Ich kann den Code auch Compelieren aber der Funktioniert einfach nicht. Der kommt nur bis</p>
<pre><code class="language-cpp">if(argc&lt;2) { 
      printf(&quot;Usage: chatclient &lt;server&gt;\n&quot;); 
      return 1; 
   }
</code></pre>
<p>und dan beendet der.</p>
<p>Bitte helft mir!<br />
THX schonmal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416044</guid><dc:creator><![CDATA[Dennis1981]]></dc:creator><pubDate>Thu, 06 Dec 2007 17:42:29 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Winsock Chat Client von c-worker on Thu, 06 Dec 2007 18:19:46 GMT]]></title><description><![CDATA[<p>Ja wie rufst du das Programm den auf? Und bist du dir sicher, dass DU das Programm geschrieben hast?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416058</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 06 Dec 2007 18:19:46 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Winsock Chat Client von c-worker on Thu, 06 Dec 2007 18:29:12 GMT]]></title><description><![CDATA[<p>Ich hab doch gesagt das ich den Chat auf der seite von c-worker gefunden hab, und dieser nicht funktioniert!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416065</guid><dc:creator><![CDATA[Dennis1981]]></dc:creator><pubDate>Thu, 06 Dec 2007 18:29:12 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Winsock Chat Client von c-worker on Thu, 06 Dec 2007 18:41:17 GMT]]></title><description><![CDATA[<p>Der funktioniert ... du musst das Programm aber mit Parametern starten (argc &lt; 2 setz voraus, dass du mindestens einen Parameter angibst!)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416077</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 06 Dec 2007 18:41:17 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Winsock Chat Client von c-worker on Thu, 06 Dec 2007 18:43:51 GMT]]></title><description><![CDATA[<p>Habs schon gefunden THX aber^^</p>
<p>ich musste den mit Client.exe 127.0.0.1 starten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416080</guid><dc:creator><![CDATA[Dennis1981]]></dc:creator><pubDate>Thu, 06 Dec 2007 18:43:51 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Winsock Chat Client von c-worker on Thu, 06 Dec 2007 19:28:28 GMT]]></title><description><![CDATA[<p>Jo, d.h. du übergibst dem Programm den Paramter &quot;127.0.0.1&quot; was &quot;localhost&quot; entspricht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416110</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 06 Dec 2007 19:28:28 GMT</pubDate></item></channel></rss>