<?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[Standard C Socket funktion  close killt QT3]]></title><description><![CDATA[<p>Hallo.</p>
<p>Habe folgendes problem: Verwende QT3 zum erstellen einer GUI und C standardbibliotheken wie unistd.h usw. zur netzwerkkommunikation. Das funktioniert auch problemlos solange close nicht aufgerufen wird.</p>
<p>also:<br />
int socket = connect(&quot;127.0.0.1&quot;, 7777</p>
<p>...</p>
<p>close(socket(</p>
<p>und die qt3 gui geht dahin. An was kann das liegen?</p>
<p>mfg<br />
Reinhard</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/207740/standard-c-socket-funktion-close-killt-qt3</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 15:45:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/207740.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 11 Mar 2008 11:56:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Standard C Socket funktion  close killt QT3 on Tue, 11 Mar 2008 11:56:27 GMT]]></title><description><![CDATA[<p>Hallo.</p>
<p>Habe folgendes problem: Verwende QT3 zum erstellen einer GUI und C standardbibliotheken wie unistd.h usw. zur netzwerkkommunikation. Das funktioniert auch problemlos solange close nicht aufgerufen wird.</p>
<p>also:<br />
int socket = connect(&quot;127.0.0.1&quot;, 7777</p>
<p>...</p>
<p>close(socket(</p>
<p>und die qt3 gui geht dahin. An was kann das liegen?</p>
<p>mfg<br />
Reinhard</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471991</guid><dc:creator><![CDATA[rklapfer]]></dc:creator><pubDate>Tue, 11 Mar 2008 11:56:27 GMT</pubDate></item><item><title><![CDATA[Reply to Standard C Socket funktion  close killt QT3 on Tue, 11 Mar 2008 11:58:49 GMT]]></title><description><![CDATA[<p>Warum nimmst du nicht QSocket?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471993</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Tue, 11 Mar 2008 11:58:49 GMT</pubDate></item><item><title><![CDATA[Reply to Standard C Socket funktion  close killt QT3 on Tue, 11 Mar 2008 12:02:01 GMT]]></title><description><![CDATA[<p>Was heißt &quot;geht dahin&quot;?</p>
<p>Und könntest Du Quellcodeausschnitte bitte so posten, dass sie wenigstens ansatzweise korrekt sind. Wir können nicht wissen ob Du lediglich Deine Forenbeiträge extrem nachlässig verfasst oder ob das Programm auch so aussieht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471996</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 11 Mar 2008 12:02:01 GMT</pubDate></item><item><title><![CDATA[Reply to Standard C Socket funktion  close killt QT3 on Tue, 11 Mar 2008 16:37:51 GMT]]></title><description><![CDATA[<p>Sorry, war an der UNI und hatte den Quellcode nicht dabei.<br />
Also hier der Code von qt3:</p>
<pre><code class="language-cpp">class MyChat : public QWidget
{
  Q_OBJECT;
  public:
    MyChat(void);

  public slots:
    void post(void);

  private:
    QTextEdit* display;
    QLineEdit* edit_msg;
    QPushButton* send_btn;
    QListBox*    user_list;
}; 

MyChat::MyChat(void)
{
  setMinimumSize(600, 500);
  setMaximumSize(600, 500);

  display = new QTextEdit(this);
  display-&gt;setGeometry(5,5,400,450);
  display-&gt;setReadOnly(true);

  edit_msg = new QLineEdit(this);
  edit_msg-&gt;setGeometry(5, 460, 400, 30);

  send_btn = new QPushButton(&quot;SEND&quot;, this);
  send_btn-&gt;setGeometry(410, 460, 180, 30);
  QObject::connect(send_btn, SIGNAL(clicked()), this , SLOT(post()));

  user_list = new QListBox(this);
  user_list-&gt;setGeometry(410, 5, 180, 450);
  user_list-&gt;insertItem(&quot;HANS&quot;);
  user_list-&gt;insertItem(&quot;JUERGEN&quot;);
}
</code></pre>
<p>Das Problem tritt effektiv im Slot auf wenn ich eine Funktion, die ich bereits im Vorhinein geschrieben habe, aufrufe:</p>
<pre><code class="language-cpp">void MyChat::post() {
  int socket = connect_to(&quot;127.0.0.1&quot;, 7777);
  // handle socket
  close(socket);
}
</code></pre>
<p>Die connect_to Funktion sieht folgendermaßen aus:</p>
<pre><code class="language-cpp">int connect_to(char* host_adress, int host_port) {
  struct sockaddr_in 	 serverAddress;
  struct hostent 	*hostInfo;

  hostInfo = gethostbyname(host_adress);

  serverAddress.sin_port = htons(host_port);
  serverAddress.sin_family = hostInfo-&gt;h_addrtype;
  memcpy((char *) &amp;serverAddress.sin_addr.s_addr, hostInfo-&gt;h_addr_list[0], hostInfo-&gt;h_length);

  int sock_id = socket(AF_INET, SOCK_STREAM, 0);
  if (sock_id == -1)
    return -1;

  //connect to server
  if(connect(sock_id, (struct sockaddr *) &amp;serverAddress, sizeof(serverAddress)) &lt; 0) {
    return -1;
  }

  return sock_id;
}
</code></pre>
<p>Der Grund warum ich nicht QSocket verwende ist da der Server bereits in C geschrieben wurde und ich zwar via QSocket Nachrichten an den Server schicken kann, jedoch keine Rückantwort vom Server kriege.</p>
<p>Mit freundlichen Grüßen<br />
Reinhard</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1472260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1472260</guid><dc:creator><![CDATA[rklapfer]]></dc:creator><pubDate>Tue, 11 Mar 2008 16:37:51 GMT</pubDate></item><item><title><![CDATA[Reply to Standard C Socket funktion  close killt QT3 on Wed, 12 Mar 2008 08:43:46 GMT]]></title><description><![CDATA[<p>Und socket ist nicht -1 bei close?<br />
Hab bisher nur mit SDL_Sockets und QSockets gearbeitet, kann daher nur Vermutungen anstellen.</p>
<p>Aber warum öffnest du bei jeder abgeschickten Zeile einen neuen Socket?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1472580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1472580</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 12 Mar 2008 08:43:46 GMT</pubDate></item><item><title><![CDATA[Reply to Standard C Socket funktion  close killt QT3 on Wed, 12 Mar 2008 13:30:31 GMT]]></title><description><![CDATA[<p>Socket ist nicht -1. Es funktioniert alles fehlerfrei, nur das Schließen bereitet mir Schwierigkeiten.</p>
<p>Also der Socket wird im post-slot eines Chats verwendet, also öffne ich einen Socket sende die Anfrage und schließe ihn wieder.</p>
<p>Ich bin erst kürzlich von C auf C++ umgestiegen und daher nicht vertraut mit Netzwerkkomponenten wie QSocket usw.</p>
<p>Aber da die Prozedur connect_to fehlerfrei funktioniert wenn sie mit gcc kompiliert wird, verstehe ich irgndwie nicht was das Problem ist...</p>
<p>Hat jemand einen Tipp? Ich bin auch mit googeln nicht weiter gekommen ..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1472842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1472842</guid><dc:creator><![CDATA[rklapfer]]></dc:creator><pubDate>Wed, 12 Mar 2008 13:30:31 GMT</pubDate></item><item><title><![CDATA[Reply to Standard C Socket funktion  close killt QT3 on Wed, 12 Mar 2008 13:38:03 GMT]]></title><description><![CDATA[<p>Da man dann ausgehen kann das mehrere solche Nachrichten verschickt werden, solltest du den socket nur einmal öffnen und erst dann wieder schließen, wenn es auch wirklich nötig ist (Programm beenden, Serverwechsel, Abmeldung oder was auch immer).</p>
<p>Du nutzt #include &lt;sys/socket.h&gt; für Sockets, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1472853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1472853</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 12 Mar 2008 13:38:03 GMT</pubDate></item><item><title><![CDATA[Reply to Standard C Socket funktion  close killt QT3 on Wed, 12 Mar 2008 13:41:56 GMT]]></title><description><![CDATA[<p>Hi,<br />
Musst Du nicht closesocket anstelle von close verwenden?</p>
<p>Was für ein OS, Complier, Library etc. verwendest Du?</p>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1472857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1472857</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Wed, 12 Mar 2008 13:41:56 GMT</pubDate></item><item><title><![CDATA[Reply to Standard C Socket funktion  close killt QT3 on Wed, 12 Mar 2008 13:48:55 GMT]]></title><description><![CDATA[<p>Ich finde beim besten Willen in der sys/socket.h keine Funktion zum Schließen von Socktes.... komisch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1472871</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1472871</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 12 Mar 2008 13:48:55 GMT</pubDate></item><item><title><![CDATA[Reply to Standard C Socket funktion  close killt QT3 on Wed, 12 Mar 2008 14:07:48 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/17700">@Fellhuhn</a><br />
Ich verstehe erlich gesagt nicht ganz wie du das meinst.</p>
<p>Also auf Server seite gibt es einen socket für Requests, der mit accept auf Nachrichten wartet.<br />
Hingegen sollte der Client (meiner Meinung nach) nicht andauernd in Verbindung zum Server stehen. Keine Ahnung habs so gelernt und es erscheint mir Ok zu sein einen socket nur dann zu verwenden wen ich ihn wirklich brauche..</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/734">@Simon</a></p>
<p>Also closesocket kenne ich gar nicht und finde auch keine Man-pages darüber.<br />
Das close das ich verwende befindet sich in der LIb <strong>&lt;unistd.h&gt;</strong> und dient dazu einen Filedescriptor zu schließen, der ja bei Sockets erstellt wird.</p>
<p>Also ich verwende Linux, und kompliere hier mit g++ (mir gcc funktioniert alles komischerweise)</p>
<p>Verwende folgende Libs</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;stdbool.h&gt;
#include &lt;string.h&gt;
#include &lt;unistd.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/socket.h&gt;
#include &lt;netinet/in.h&gt;
#include &lt;netdb.h&gt;
#include &lt;pthread.h&gt;
#include &lt;arpa/inet.h&gt;
#include &lt;string.h&gt;
#include &lt;signal.h&gt;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1472902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1472902</guid><dc:creator><![CDATA[rklapfer]]></dc:creator><pubDate>Wed, 12 Mar 2008 14:07:48 GMT</pubDate></item><item><title><![CDATA[Reply to Standard C Socket funktion  close killt QT3 on Wed, 12 Mar 2008 14:10:52 GMT]]></title><description><![CDATA[<p>Folgendes wäre schon einmal besser:</p>
<pre><code class="language-cpp">#include &lt;cstdio&gt;
#include &lt;cstdlib&gt;
#include &lt;stdbool.h&gt;
#include &lt;string.h&gt;
#include &lt;unistd.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/socket.h&gt;
#include &lt;netinet/in.h&gt;
#include &lt;netdb.h&gt;
#include &lt;pthread.h&gt;
#include &lt;arpa/inet.h&gt;
#include &lt;cstring&gt;
#include &lt;csignal&gt;
</code></pre>
<p>Nun, C++ ist kein C, daher kann es da zu Problemen kommen. Und wieso funktionieren QSockets nicht? Es kommt doch das gleiche beim Server an, nur die Aufrufe sind anders (und komfortabler wie ich finde).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1472908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1472908</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 12 Mar 2008 14:10:52 GMT</pubDate></item><item><title><![CDATA[Reply to Standard C Socket funktion  close killt QT3 on Wed, 12 Mar 2008 15:53:00 GMT]]></title><description><![CDATA[<p>Also wie gesagt bin C++ neuling und mit C gut vertraut. Wollte einen einfachen C server der mit einem C++ client interagiert.</p>
<p>Habe mich mit QSockets kurz befasst, konnte dem Server etwas via TCP schicken, konnte allerdings die Rückantwort nicht empfangen.</p>
<p>Ich weiß meine Fragen sind nicht die schlausten aber ich weiß noch nicht sehr viel über C++.</p>
<p>Habe bisher eine Makefile mit qmake erstellt. Habe jetzt die Libs wie beshrieben geändert, kann aber nicht mehr kompliieren.</p>
<blockquote>
<p>gcc -c -pipe -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I. -I/usr/include/qt3 -o networking.o networking.c<br />
networking.c:15:18: Fehler: cstdio: No such file or directory<br />
networking.c:16:19: Fehler: cstdlib: No such file or directory<br />
networking.c:26:19: Fehler: cstring: No such file or directory<br />
networking.c: In Funktion »isValidIP«:<br />
networking.c:104: Warnung: Implizite Deklaration der Funktion »sscanf«<br />
networking.c:104: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »sscanf«<br />
make: *** [networking.o] Fehler 1</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1473045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473045</guid><dc:creator><![CDATA[rklapfer]]></dc:creator><pubDate>Wed, 12 Mar 2008 15:53:00 GMT</pubDate></item><item><title><![CDATA[Reply to Standard C Socket funktion  close killt QT3 on Thu, 13 Mar 2008 13:09:54 GMT]]></title><description><![CDATA[<p>Zunächst mal zu deinem Problem:</p>
<p>Die Anwendung ist singlethreaded, also KANN es passieren, daß eine Oberfläche einen Timeout hat. Das passiert beispielsweise auch, wenn du in VStudio ein Oberflächenelement debuggst, und dieses für 60 Sekunden vom System nicht aktualisiert werden kann - die Oberfläche ist dann im Timeout und man muss das System neu starten.</p>
<p>Ist aber nur so ein Schuss ins Blaue.</p>
<p>Noch etwas: Die Anderen haben recht: TCP Verbindungen lässt man offen, bis eine Verbindung nicht mehr benötigt wird. TCP sendet nur Pakete, wenn Daten zu übertragen sind, oder um einen Timeout zu verhindern.</p>
<p>Im Übrigen lässt z.B. Windows XP zu jeder Zeit nur zwei TCP Verbindungen zwischen zwei Hosts zu. Evtl. ist die Verbindung noch nicht abgebaut, wenn du eine neue aufmachst, was beim dritten Aufruf zum Absturz führen könnte.</p>
<p>Cheers<br />
Sid</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473609</guid><dc:creator><![CDATA[Sid2K7]]></dc:creator><pubDate>Thu, 13 Mar 2008 13:09:54 GMT</pubDate></item><item><title><![CDATA[Reply to Standard C Socket funktion  close killt QT3 on Thu, 13 Mar 2008 13:12:56 GMT]]></title><description><![CDATA[<p>rklapfer schrieb:</p>
<blockquote>
<p>Also wie gesagt bin C++ neuling und mit C gut vertraut. Wollte einen einfachen C server der mit einem C++ client interagiert.</p>
<p>Habe mich mit QSockets kurz befasst, konnte dem Server etwas via TCP schicken, konnte allerdings die Rückantwort nicht empfangen.</p>
<p>Ich weiß meine Fragen sind nicht die schlausten aber ich weiß noch nicht sehr viel über C++.</p>
<p>Habe bisher eine Makefile mit qmake erstellt. Habe jetzt die Libs wie beshrieben geändert, kann aber nicht mehr kompliieren.</p>
<blockquote>
<p>gcc -c -pipe -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I. -I/usr/include/qt3 -o networking.o networking.c<br />
networking.c:15:18: Fehler: cstdio: No such file or directory<br />
networking.c:16:19: Fehler: cstdlib: No such file or directory<br />
networking.c:26:19: Fehler: cstring: No such file or directory<br />
networking.c: In Funktion »isValidIP«:<br />
networking.c:104: Warnung: Implizite Deklaration der Funktion »sscanf«<br />
networking.c:104: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »sscanf«<br />
make: *** [networking.o] Fehler 1</p>
</blockquote>
</blockquote>
<p>Wenn du C++ schreibst, muss die Quellcode-Datei auch .cpp heissen, oder du musst den Compiler anweisen, sie als CPP zu übersetzen.</p>
<p>(Er findet die includes/libs nicht, weil du als C und nicht als C++ Code kompilierst)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473613</guid><dc:creator><![CDATA[Sid2K7]]></dc:creator><pubDate>Thu, 13 Mar 2008 13:12:56 GMT</pubDate></item><item><title><![CDATA[Reply to Standard C Socket funktion  close killt QT3 on Thu, 13 Mar 2008 13:13:46 GMT]]></title><description><![CDATA[<p>P.S.: DAS müsstest du aber wissen, wenn du &quot;mit C gut vertraut&quot; bist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473615</guid><dc:creator><![CDATA[Sid2K7]]></dc:creator><pubDate>Thu, 13 Mar 2008 13:13:46 GMT</pubDate></item><item><title><![CDATA[Reply to Standard C Socket funktion  close killt QT3 on Thu, 13 Mar 2008 18:16:20 GMT]]></title><description><![CDATA[<p>Ok, war echt blöde Frage.</p>
<p>Af jeden Fall herzlichen Dank, ich werde versuchen das Problem zu lösen bzw auf QSsockets umsteigen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473843</guid><dc:creator><![CDATA[rklapfer]]></dc:creator><pubDate>Thu, 13 Mar 2008 18:16:20 GMT</pubDate></item><item><title><![CDATA[Reply to Standard C Socket funktion  close killt QT3 on Fri, 14 Mar 2008 08:51:18 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Deine Klasse ist von QWidget abgeleitet und ich kann mir vorstellen, dass QWidget eine Methode close besitzt. Kann es sein, dass Du diese aufrufst? Das würde auch erklären, warum dann Dein QT-Fenster verschwindet. Liegt die close Funktion für die Sockets wirklich im globalen Namensraum?. Dann musst Du es so</p>
<pre><code class="language-cpp">::close(...
</code></pre>
<p>aufrufen.</p>
<p>DJohn</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474107</guid><dc:creator><![CDATA[DJohn@work]]></dc:creator><pubDate>Fri, 14 Mar 2008 08:51:18 GMT</pubDate></item><item><title><![CDATA[Reply to Standard C Socket funktion  close killt QT3 on Sat, 15 Mar 2008 13:36:58 GMT]]></title><description><![CDATA[<p>Ach gott, das wars!! So ein bescheuerter Fehler kann auch nur mir pasieren ...</p>
<p>Danke!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474797</guid><dc:creator><![CDATA[rklapfer]]></dc:creator><pubDate>Sat, 15 Mar 2008 13:36:58 GMT</pubDate></item></channel></rss>