<?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[Segmentation Fault bei closesocket]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe einen (Server)Socket mit bind, listen und accept aufgemacht.<br />
Jetzt möchte ich den Socket schließen. Da der Socket aber blockiert ist<br />
und auf die nächste Connection wartet, möchte ich ihn in einem anderen<br />
Thread schliessen. Das mache ich mit closesocket. Aber genau in der<br />
Zeile kriege ich ein Segmentation fault, der nix mit der socket_id zu tun hat.<br />
Ich vermute, dass er den Socket erfolgreich schließt und dann in<br />
dem blockierten Thread der Zugriffsfehler auftritt...<br />
Sowohl bei listen als auch bei accept schmeiße ich bei Rückgabewert -1 eine<br />
Exception, die dann ganz oben in meiner Thread-Klasse (,die ich schon<br />
häufiger verwendet habe) gefangen wird. Kann irgendwo innerhalb der<br />
accept oder bind-Methode ein Segmentation fault auftreten?</p>
<p>Muß ich den Socket vielleicht durch eine andere Methode schließen?</p>
<p>Gruß,<br />
*Cpp-Anfänger*</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/162371/segmentation-fault-bei-closesocket</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 03:52:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/162371.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Oct 2006 02:38:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Segmentation Fault bei closesocket on Wed, 18 Oct 2006 02:38:41 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe einen (Server)Socket mit bind, listen und accept aufgemacht.<br />
Jetzt möchte ich den Socket schließen. Da der Socket aber blockiert ist<br />
und auf die nächste Connection wartet, möchte ich ihn in einem anderen<br />
Thread schliessen. Das mache ich mit closesocket. Aber genau in der<br />
Zeile kriege ich ein Segmentation fault, der nix mit der socket_id zu tun hat.<br />
Ich vermute, dass er den Socket erfolgreich schließt und dann in<br />
dem blockierten Thread der Zugriffsfehler auftritt...<br />
Sowohl bei listen als auch bei accept schmeiße ich bei Rückgabewert -1 eine<br />
Exception, die dann ganz oben in meiner Thread-Klasse (,die ich schon<br />
häufiger verwendet habe) gefangen wird. Kann irgendwo innerhalb der<br />
accept oder bind-Methode ein Segmentation fault auftreten?</p>
<p>Muß ich den Socket vielleicht durch eine andere Methode schließen?</p>
<p>Gruß,<br />
*Cpp-Anfänger*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1156679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1156679</guid><dc:creator><![CDATA[*Cpp-Anfänger* 0]]></dc:creator><pubDate>Wed, 18 Oct 2006 02:38:41 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation Fault bei closesocket on Wed, 18 Oct 2006 06:23:44 GMT]]></title><description><![CDATA[<p>Folgendes geht bei mir Problemlos:</p>
<pre><code class="language-cpp">#include &lt;winsock2.h&gt;
#include &lt;stdio.h&gt;
#include &lt;tchar.h&gt;
#pragma comment(lib, &quot;Ws2_32.lib&quot;)

SOCKET ListenSocket;

BOOL WINAPI CtrlHandlerRoutine(
  DWORD dwCtrlType
)
{
  closesocket(ListenSocket);
  return TRUE;
}

int _tmain() {

  SetConsoleCtrlHandler(CtrlHandlerRoutine, TRUE);

  //----------------------
  // Initialize Winsock.
  WSADATA wsaData;
  printf(&quot;Initializing wsock...&quot;);
  int iResult = WSAStartup(MAKEWORD(2,2), &amp;wsaData);
  if (iResult != NO_ERROR)
  {
    printf(&quot;Error at WSAStartup()\n&quot;);
    return 1;
  }
  printf(&quot; Ok\n&quot;);

  //----------------------
  // Create a SOCKET for listening for
  // incoming connection requests.
  printf(&quot;Creating socket...&quot;);
  ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  if (ListenSocket == INVALID_SOCKET) {
    printf(&quot;Error at socket(): %ld\n&quot;, WSAGetLastError());
    WSACleanup();
    return 2;
  }
  printf(&quot; Ok\n&quot;);

  //----------------------
  // The sockaddr_in structure specifies the address family,
  // IP address, and port for the socket that is being bound.
  sockaddr_in service;
  service.sin_family = AF_INET;
  service.sin_addr.s_addr = inet_addr(&quot;127.0.0.1&quot;);
  service.sin_port = htons(27015);

  printf(&quot;Binding to port...&quot;);
  if (bind( ListenSocket, 
    (SOCKADDR*) &amp;service, 
    sizeof(service)) == SOCKET_ERROR) {
    printf(&quot;bind() failed.\n&quot;);
    closesocket(ListenSocket);
    WSACleanup();
    return 3;
  }
  printf(&quot; Ok\n&quot;);

  //----------------------
  // Listen for incoming connection requests.
  // on the created socket
  printf(&quot;Start listening...&quot;);
  if (listen( ListenSocket, 1 ) == SOCKET_ERROR)
  {
    printf(&quot;Error listening on socket.\n&quot;);
    closesocket(ListenSocket);
    WSACleanup();
    return 4;
  }
  printf(&quot; Ok\n&quot;);

  //----------------------
  // Create a SOCKET for accepting incoming requests.
  SOCKET AcceptSocket;
  printf(&quot;Waiting for client to connect...\n&quot;);

  //----------------------
  // Accept the connection.
  while(1) 
  {
    AcceptSocket = SOCKET_ERROR;
    while( AcceptSocket == SOCKET_ERROR ) 
    {
      AcceptSocket = accept( ListenSocket, NULL, NULL );
      if (AcceptSocket == SOCKET_ERROR)
      {
        DWORD dwErr = WSAGetLastError();
        printf(&quot;accept returned: %d, ERR: %d\n&quot;, AcceptSocket, dwErr);
        if (dwErr == WSAEINTR)
          break;
      }
    }  // while
    if (AcceptSocket != SOCKET_ERROR)
    {
      printf(&quot;Client connected.\n&quot;);
      ListenSocket = AcceptSocket;
    }
    break;
  }

  WSACleanup();
  return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1156718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1156718</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Wed, 18 Oct 2006 06:23:44 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation Fault bei closesocket on Wed, 18 Oct 2006 15:47:51 GMT]]></title><description><![CDATA[<p>Danke Jochen.</p>
<p>Leider liegt es nicht an dem Socket.<br />
Ich glaub ich hab ein Problem mit dem<br />
thread-safe exception handling obwohl ich mit -mthreads (MinGW)<br />
gelinkt habe...<br />
Ich hab meine Klasse in eine dll ausgelagert, die ich auch mit<br />
-mthreads gelinkt habe.</p>
<p>Naja...<br />
Trotzdem VIELEN DANK</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1157198</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1157198</guid><dc:creator><![CDATA[*Cpp-Anfänger* 0]]></dc:creator><pubDate>Wed, 18 Oct 2006 15:47:51 GMT</pubDate></item></channel></rss>