<?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[Verbindung trennen &#x2F; Winsocks]]></title><description><![CDATA[<p>Nach einer Verbindung möchte ich sie halt trennen, damit man eine neue aufbauen kann, momentan krieg ich noch fehler 10048. Ich hab es schon mit closesocket probiert, aber das klappte nicht.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/117435/verbindung-trennen-winsocks</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Jul 2026 19:02:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/117435.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 07 Aug 2005 16:26:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Sun, 07 Aug 2005 16:26:16 GMT]]></title><description><![CDATA[<p>Nach einer Verbindung möchte ich sie halt trennen, damit man eine neue aufbauen kann, momentan krieg ich noch fehler 10048. Ich hab es schon mit closesocket probiert, aber das klappte nicht.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/847525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847525</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sun, 07 Aug 2005 16:26:16 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Sun, 07 Aug 2005 17:18:02 GMT]]></title><description><![CDATA[<p>Was hast du denn getan um sie zu öffnen? Vielleicht zeigst du mal ein bisschen code!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/847553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847553</guid><dc:creator><![CDATA[nirsaja]]></dc:creator><pubDate>Sun, 07 Aug 2005 17:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Sun, 07 Aug 2005 17:29:24 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">bool InitSocket(SOCKET* s)
{
	*s = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
	if ( *s == INVALID_SOCKET )
	{
		MessageBox(0,&quot;Fehler: Socket konnte nicht erstellt werden!&quot;,0,0);
		return false;
	}
	return true;
}
</code></pre>
<p>edit: Mööp! Sicher wundert ihr euch jetzt woher ich (flammenvogel) das weiß, aber joomoo ist gerade bei mir zu Hause mit seinem PC und hat das jetzt von meinem gepostet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/847557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847557</guid><dc:creator><![CDATA[flammenvogel]]></dc:creator><pubDate>Sun, 07 Aug 2005 17:29:24 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Sun, 07 Aug 2005 17:43:38 GMT]]></title><description><![CDATA[<p>Also soweit du deinen Code gezeigt hast, ist doch alles ok. Lässt sich doch prima mit closesocket schließen? Was machst du denn sonst noch mit dem socket? Zeig das doch mal...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/847563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847563</guid><dc:creator><![CDATA[nirsaja]]></dc:creator><pubDate>Sun, 07 Aug 2005 17:43:38 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Sun, 07 Aug 2005 19:13:08 GMT]]></title><description><![CDATA[<p>Auf der ServerSeite mache ich ein bind + listen + accept, auf der Client Seite ein connect. Dann Sende ich was mit recv und send. Dann will ich die Verbindung dannach abbauen (closesocket()). Allerdings wenn ich dann auf dem selben Socket und auf dem selben Port nochmal ein Socket erstelle kriege ich den WinSock Fehlercode 10048 (Port in use). Ich verstehe nicht warum ...</p>
<p>Nochmal ein bisschen Code:</p>
<pre><code class="language-cpp">void ServerSocket(void *dummy)
{
 SOCKET *s = &amp;DSocket;
	//bind
	SOCKET connected_socket;
	int error_code;
	sockaddr_in service;
	service.sin_family = AF_INET;
	service.sin_addr.s_addr = ADDR_ANY;
	service.sin_port = htons( port );

	if ( bind( *s, (SOCKADDR*) &amp;service, sizeof(service) ) == SOCKET_ERROR ) {
		error_code = WSAGetLastError();
		sprintf(buf, &quot;WinSock Fehler: %i&quot;,error_code);
    MessageBox(0,buf,0,0);
    closesocket(*s);
    return;
	}

	//listen
	if ( listen( *s, 1 ) == SOCKET_ERROR )
	{
    MessageBox(0,&quot;Error listening on socket&quot;,0,0);
	}

	//accept
  connected_socket = accept( *s, NULL, NULL );
	*s = connected_socket;
	Tfertig = true;
}

void ClientSocket(void *dummy)
{
 SOCKET *s = &amp;DSocket;
	sockaddr_in clientService;

	clientService.sin_family = AF_INET;
	clientService.sin_addr.s_addr = inet_addr( Adresse );
	clientService.sin_port = htons( port );

	if ( connect( *s, (SOCKADDR*) &amp;clientService, sizeof(clientService) ) == SOCKET_ERROR)
	{
  Tfertig = 2;
	}
	else
	{
  Tfertig = true;
 }
}
</code></pre>
<p>(In flammenvogel alias joomoo)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/847607</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847607</guid><dc:creator><![CDATA[flammenvogel]]></dc:creator><pubDate>Sun, 07 Aug 2005 19:13:08 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Sun, 07 Aug 2005 19:58:59 GMT]]></title><description><![CDATA[<p>Hmm, mir ist der Ablauf nicht ganz klar. Sieht das so aus ?<br />
S: BIND<br />
S: LISTEN<br />
S: ACCEPT &lt;- Hier verbindet sich der Client und trennt die Verbindung wieder ?<br />
S: CLOSE</p>
<p>C: CONNECT<br />
C: CLOSE</p>
<p>An welcher Stelle dann das Problem auf ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/847622</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847622</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Sun, 07 Aug 2005 19:58:59 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Sun, 07 Aug 2005 20:08:40 GMT]]></title><description><![CDATA[<p>Nachdem die komplette Vernindung mit closesocket() beendet wurde, kann ich einfach keine neue auf dem Socket aufbauen. Oder habe ich deine Frage falsch verstanden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/847628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847628</guid><dc:creator><![CDATA[flammenvogel]]></dc:creator><pubDate>Sun, 07 Aug 2005 20:08:40 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Sun, 07 Aug 2005 21:08:34 GMT]]></title><description><![CDATA[<p>Ruf mal zuerst shutdown() und dann closesocket() auf, u.U hilft das.</p>
<p><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/winsock_functions.asp" rel="nofollow">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/winsock_functions.asp</a></p>
<p>MSDN schrieb:</p>
<blockquote>
<p>To assure that all data is sent and received on a connected socket before it is closed, an application should use shutdown to close connection before calling closesocket. For example, to initiate a graceful disconnect.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/847655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847655</guid><dc:creator><![CDATA[MSDN]]></dc:creator><pubDate>Sun, 07 Aug 2005 21:08:34 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Mon, 08 Aug 2005 12:14:06 GMT]]></title><description><![CDATA[<p>Irgendwie funktioniert das immer noch nicht richtig</p>
]]></description><link>https://www.c-plusplus.net/forum/post/847920</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847920</guid><dc:creator><![CDATA[flammenvogel]]></dc:creator><pubDate>Mon, 08 Aug 2005 12:14:06 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Mon, 08 Aug 2005 20:46:30 GMT]]></title><description><![CDATA[<p>Du verbindest dich mit dem Client (ClientSocket) zum Server (ServerSocket) und trennst dann beim ClientSocket die Verbindung ?<br />
Anschließend nimmt der ServerSocket keine weiteren Verbindungen vom ClientSocket an oder wie ?<br />
Wo kommt das Port-In-Use beim ClientSocket ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/848319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/848319</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Mon, 08 Aug 2005 20:46:30 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Tue, 09 Aug 2005 09:37:52 GMT]]></title><description><![CDATA[<p>Beim Server Socket...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/848541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/848541</guid><dc:creator><![CDATA[flammenvogel]]></dc:creator><pubDate>Tue, 09 Aug 2005 09:37:52 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Tue, 09 Aug 2005 14:58:37 GMT]]></title><description><![CDATA[<p>Du verbindest also den ClientSocket mit dem ServerSocket und trennst dann die Verbindung vom ClientSocket aus und schließt den Socket vom Client und Server.<br />
Dann erzeugst du ServerSocket und ClientSocket neu und es geht nicht mehr ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/848794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/848794</guid><dc:creator><![CDATA[geeky (not@home)]]></dc:creator><pubDate>Tue, 09 Aug 2005 14:58:37 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Tue, 09 Aug 2005 15:15:03 GMT]]></title><description><![CDATA[<p>geeky (not@home) schrieb:</p>
<blockquote>
<p>Du verbindest also den ClientSocket mit dem ServerSocket und trennst dann die Verbindung vom ClientSocket aus und schließt den Socket vom Client und Server.<br />
Dann erzeugst du ServerSocket und ClientSocket neu und es geht nicht mehr ?</p>
</blockquote>
<p>Genau. Aber die Verbindung wird auf beiden Seiden mit closesocket() geschlossen, und nicht &quot;vom ClientSocket aus&quot;, oder was meinst du damit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/848808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/848808</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Tue, 09 Aug 2005 15:15:03 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Tue, 09 Aug 2005 15:53:33 GMT]]></title><description><![CDATA[<p>Naja, ne echte Verbindung besteht ja nur, wenn Server-Socket den Client-Socket angenommen hat, wenn nun der Client-Socket geschlossen wird, ist ja praktisch keine Verbindung mehr da.</p>
<p>Hmm, demnach scheint ja alles richtig gemacht zu werden, sehr merkwürdig.</p>
<p>Was mich noch ein wenig irritiert:<br />
Wieso benutzt du bei listen(), bind(), etc. überall Pointer beim 1. Parameter ?<br />
Und was ist DSocket ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/848827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/848827</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Tue, 09 Aug 2005 15:53:33 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Tue, 09 Aug 2005 17:27:04 GMT]]></title><description><![CDATA[<p>geeky schrieb:</p>
<blockquote>
<p>Naja, ne echte Verbindung besteht ja nur, wenn Server-Socket den Client-Socket angenommen hat, wenn nun der Client-Socket geschlossen wird, ist ja praktisch keine Verbindung mehr da.</p>
<p>Hmm, demnach scheint ja alles richtig gemacht zu werden, sehr merkwürdig.</p>
<p>Was mich noch ein wenig irritiert:<br />
Wieso benutzt du bei listen(), bind(), etc. überall Pointer beim 1. Parameter ?<br />
Und was ist DSocket ?</p>
</blockquote>
<p>Bei listen(), blind(), etc. wird halt der Pointer auf DSocket (das ist einfach ein vorher definierter Socket) übergeben, ja etwas umständlich aber warum das so ist ist jetzt egal.</p>
<p>Also send und recv funktionieren auch schon, und es klappt auch alles was wir wollen, nur man kann halt nicht ein zweites mal ServerSocket ausführen ohne ne Fehlermeldung zu kriegen, nachdem man schonmal eine Verbindung hatte.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/848882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/848882</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Tue, 09 Aug 2005 17:27:04 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Tue, 09 Aug 2005 17:53:27 GMT]]></title><description><![CDATA[<p>Ist es denn dann beabsichtigt das DSocket beim Client und ServerSocket vorkommt ?<br />
Überschreibt sich das nicht gegenseitig oder sind Client und Socket jeweils in einer anderen Anwendung ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/848897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/848897</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Tue, 09 Aug 2005 17:53:27 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Wed, 10 Aug 2005 00:39:42 GMT]]></title><description><![CDATA[<p>geeky schrieb:</p>
<blockquote>
<p>Ist es denn dann beabsichtigt das DSocket beim Client und ServerSocket vorkommt ?<br />
Überschreibt sich das nicht gegenseitig oder sind Client und Socket jeweils in einer anderen Anwendung ?</p>
</blockquote>
<p>Welcher Socket ist in einer anderen Anwendung??? Versteh ich nicht ganz den zweiten Satz.</p>
<p>Auf jeden fall sind beide funktionen in der gleich anwendung, und der client führt die clientsocket aus und der server die serversocket. Der DSocket überschneidet sich dann nicht weil er ja auf 2 PCs ist.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/849061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/849061</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Wed, 10 Aug 2005 00:39:42 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Wed, 10 Aug 2005 07:26:31 GMT]]></title><description><![CDATA[<p>Den Socket der am Port lauscht schließt man ja nur am Ende des Programms.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/849112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/849112</guid><dc:creator><![CDATA[:-))]]></dc:creator><pubDate>Wed, 10 Aug 2005 07:26:31 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Wed, 10 Aug 2005 11:47:34 GMT]]></title><description><![CDATA[<p>Beim Nochmal-Angucken springt mir dieses ins Auge:</p>
<pre><code class="language-cpp">//accept
  connected_socket = accept( *s, NULL, NULL );
    *s = connected_socket;
    Tfertig = true;
</code></pre>
<p>Wieso weisst du *s den connected_socket zu ?<br />
Damit hast du den listen()-socket überschrieben und bei einem späteren closesocket(*s) schließt du nur die Client-Verbindung aber nicht den Listen-Socket.</p>
<p>Edit: Im meinem letzten Post meinte ich &quot;Client und Server&quot; statt &quot;Client und Socket&quot;, aber meine Frage wurde ja trotzdem beantwortet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";D"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/849327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/849327</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Wed, 10 Aug 2005 11:47:34 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Wed, 10 Aug 2005 12:11:49 GMT]]></title><description><![CDATA[<p>Wir (joomoo und ich)</p>
<p>haben das jetzt in</p>
<pre><code class="language-cpp">*s = accept( *s, NULL, NULL );
</code></pre>
<p>geändert.</p>
<p>Wie sollte der Code den sonst aussehen beim Server?</p>
<p>EDIT: Es funktioniert mit dem geändertem Code auch nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/849347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/849347</guid><dc:creator><![CDATA[flammenvogel]]></dc:creator><pubDate>Wed, 10 Aug 2005 12:11:49 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Wed, 10 Aug 2005 13:31:32 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">SOCKET *s = DSocket;
</code></pre>
<p>Was ist DSocket für ein Socket?<br />
Du legst einen Pointer auf diesen Socket an und immer wenn du diesen Pointer benutzt greifst du also direkt auf diesen Socket zu.</p>
<p>Ob du nun</p>
<pre><code class="language-cpp">connected_socket = accept( *s, NULL, NULL );
    *s = connected_socket;
</code></pre>
<p>schreibst oder</p>
<pre><code class="language-cpp">*s = accept( *s, NULL, NULL );
</code></pre>
<p>ist im Endeffekt egal.<br />
Ich denke das Problem liegt darin, dass du DSocket überschreibst und deshalb darauf beim zweiten Mal nicht zugegriffen werden kann.<br />
Das ist aber nur eine Vermutung, da ich nicht genau weiß was DSocket überhaupt für ein Socket ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/849410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/849410</guid><dc:creator><![CDATA[WinSock]]></dc:creator><pubDate>Wed, 10 Aug 2005 13:31:32 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Wed, 10 Aug 2005 14:08:09 GMT]]></title><description><![CDATA[<p>Es geht jetzt, ich habe die ServerSocket funktion ein bisschen umprogrammiert, so das in der Funktion ein neues Socket erstellt wird, das dann auf dem Port lauscht. Sobald eine verbindung mit accept angenommen wird, wird das zurückgegeben Socket dem richtig Socket zugewiesen (das mit dem das Programm arbeitetet), dann wird das listen socket noch in der Server Socket Funktion wieder geschlossen.</p>
<p>thks</p>
]]></description><link>https://www.c-plusplus.net/forum/post/849451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/849451</guid><dc:creator><![CDATA[flammenvogel]]></dc:creator><pubDate>Wed, 10 Aug 2005 14:08:09 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Tue, 30 Aug 2005 16:42:04 GMT]]></title><description><![CDATA[<p>Habe derzeit genau das selbe Problem.</p>
<pre><code class="language-cpp">while(!TerminateNetworkThread)
	{
     AcceptSocket = SOCKET_ERROR;
     while ( AcceptSocket == SOCKET_ERROR )
	      AcceptSocket = accept(s, NULL, NULL );
  	do
  	{
      bytesRecv = recv(AcceptSocket, recvbuf, 32, 0 );
	    if(bytesRecv &gt; 2)
	      MessageBox(NULL,	recvbuf, &quot;data&quot;, MB_OK	| MB_ICONINFORMATION );
	    else if(bytesRecv == SOCKET_ERROR)
	      MessageBox(NULL,	&quot;Connection lost.&quot;, &quot;Info&quot;, MB_OK	| MB_ICONINFORMATION );
		} while(bytesRecv != SOCKET_ERROR);
		shutdown(AcceptSocket, SD_BOTH);
		closesocket(AcceptSocket);
	 }
</code></pre>
<p>Nachdem der Client die Verbindung getrennt hat, kann er sich noch einmal erfolgreich mit dem Server verbinden und Daten übertragen. Sobald die Verbindung aber wieder (d.h. zum zweiten Mal) getrennt wird, ist es nicht mehr möglich sich erneut mit dem Server zu verbinden, dieser kommt aus dem recv() nicht mehr zurück und produziert 100% Prozessorauslastung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/861579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861579</guid><dc:creator><![CDATA[jmueller]]></dc:creator><pubDate>Tue, 30 Aug 2005 16:42:04 GMT</pubDate></item><item><title><![CDATA[Reply to Verbindung trennen &#x2F; Winsocks on Tue, 30 Aug 2005 17:33:11 GMT]]></title><description><![CDATA[<p>Problem gelöst. recv() liefert 0 zurück wenn die Verbindung korrekt getrennt wurde, das wurde nicht abgeprüft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/861600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861600</guid><dc:creator><![CDATA[jmueller]]></dc:creator><pubDate>Tue, 30 Aug 2005 17:33:11 GMT</pubDate></item></channel></rss>