<?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[Frage zu Ports &#x2F;WinSock]]></title><description><![CDATA[<p>Hallo, ich mache folgendes:</p>
<p>Ich erstelle einen Server<br />
Ein Client connected<br />
Der Server nimmt ihn an mit accept und übergibt accept einen pointer zu einer SOCKADDR Structur, um die Client Informationen zu speichern...</p>
<pre><code class="language-cpp">SOCKET sk_AcceptSocket(SOCKET skServer, SOCKADDR_IN *pClientAddr)
    {   
        /* Variables */ 
        int iInAddrSize = sizeof(*pClientAddr);

        return accept(skServer, (SOCKADDR*) pClientAddr, &amp;iInAddrSize);       
    }
</code></pre>
<p>so, wenn ich nun die ip aus der Structur extrahiere bekomme ich die richtige Ip<br />
wenn ich nun versuche den Port zuerfahren, wirds interesant:</p>
<p>ich stelle so eine verbindung her... Client Port: 1994<br />
(obwohl der server eigentlich auf 1234 geöffnet ist, müsste der Client nicht über den selben port connecten ?! oder regeln dass die winsocks dynamisch?)<br />
nun trenne ich die verbingung...</p>
<p>dann verbinde ich wieder.. und nun ist der Client auf Port: 1995<br />
Also das der Client immer auf einem anderen Port connected kann ich noch verstehen, aber warum immer um eins erhöht ?! ich disconnecte ja schliesslich ordentlich...</p>
<pre><code class="language-cpp">int i_CloseSocket(SOCKET skClose)
    {
        return closesocket(skClose);
    }

    int i_CloseWinsock(void)
    {
        return WSACleanup();
    }
</code></pre>
<p>Ist das normal das sich der &quot;Client Port immer um eins erhöht ?&quot;<br />
Ich hab das auch mal anders ausprobiert..<br />
ich verbinde meine beiden programme (port : 1994 zb.) danach schliesse ich sie<br />
öffne meinen Browser und schliesse ihn..<br />
verbinde wieder meine programme und bin dann bei port: 2011, als ich das gesehen hab dachte ich mir es wäre normal das der Port vom Clienten immer &quot;hochgezählt&quot; wird... Habt ihr ne Idee woran das liegt ?</p>
<p>Den Port lass ich mir folgender Maßen anzeigen:</p>
<pre><code class="language-cpp">/* Get the port from addr */   
    string s_AddrToIp(SOCKADDR_IN *pAddr)
    {
        /* Check the pointer */    
        if(!pAddr) return &quot;&quot;;

        /* Variables */   
        string sIp;
        sIp = inet_ntoa(pAddr-&gt;sin_addr);

        return sIp;
    }
/* End */

/* Get the ip from addr */  
    unsigned short ush_AddrToPort(SOCKADDR_IN *pAddr)
    {
        /* Check the pointer */      
        if(!pAddr) return 0;

        return ntohs(pAddr-&gt;sin_port);
    }
/* End */
</code></pre>
<p>Gruß Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/204119/frage-zu-ports-winsock</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Apr 2026 23:26:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/204119.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 30 Jan 2008 13:17:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Ports &#x2F;WinSock on Wed, 30 Jan 2008 13:17:48 GMT]]></title><description><![CDATA[<p>Hallo, ich mache folgendes:</p>
<p>Ich erstelle einen Server<br />
Ein Client connected<br />
Der Server nimmt ihn an mit accept und übergibt accept einen pointer zu einer SOCKADDR Structur, um die Client Informationen zu speichern...</p>
<pre><code class="language-cpp">SOCKET sk_AcceptSocket(SOCKET skServer, SOCKADDR_IN *pClientAddr)
    {   
        /* Variables */ 
        int iInAddrSize = sizeof(*pClientAddr);

        return accept(skServer, (SOCKADDR*) pClientAddr, &amp;iInAddrSize);       
    }
</code></pre>
<p>so, wenn ich nun die ip aus der Structur extrahiere bekomme ich die richtige Ip<br />
wenn ich nun versuche den Port zuerfahren, wirds interesant:</p>
<p>ich stelle so eine verbindung her... Client Port: 1994<br />
(obwohl der server eigentlich auf 1234 geöffnet ist, müsste der Client nicht über den selben port connecten ?! oder regeln dass die winsocks dynamisch?)<br />
nun trenne ich die verbingung...</p>
<p>dann verbinde ich wieder.. und nun ist der Client auf Port: 1995<br />
Also das der Client immer auf einem anderen Port connected kann ich noch verstehen, aber warum immer um eins erhöht ?! ich disconnecte ja schliesslich ordentlich...</p>
<pre><code class="language-cpp">int i_CloseSocket(SOCKET skClose)
    {
        return closesocket(skClose);
    }

    int i_CloseWinsock(void)
    {
        return WSACleanup();
    }
</code></pre>
<p>Ist das normal das sich der &quot;Client Port immer um eins erhöht ?&quot;<br />
Ich hab das auch mal anders ausprobiert..<br />
ich verbinde meine beiden programme (port : 1994 zb.) danach schliesse ich sie<br />
öffne meinen Browser und schliesse ihn..<br />
verbinde wieder meine programme und bin dann bei port: 2011, als ich das gesehen hab dachte ich mir es wäre normal das der Port vom Clienten immer &quot;hochgezählt&quot; wird... Habt ihr ne Idee woran das liegt ?</p>
<p>Den Port lass ich mir folgender Maßen anzeigen:</p>
<pre><code class="language-cpp">/* Get the port from addr */   
    string s_AddrToIp(SOCKADDR_IN *pAddr)
    {
        /* Check the pointer */    
        if(!pAddr) return &quot;&quot;;

        /* Variables */   
        string sIp;
        sIp = inet_ntoa(pAddr-&gt;sin_addr);

        return sIp;
    }
/* End */

/* Get the ip from addr */  
    unsigned short ush_AddrToPort(SOCKADDR_IN *pAddr)
    {
        /* Check the pointer */      
        if(!pAddr) return 0;

        return ntohs(pAddr-&gt;sin_port);
    }
/* End */
</code></pre>
<p>Gruß Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1446293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1446293</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Wed, 30 Jan 2008 13:17:48 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Ports &#x2F;WinSock on Wed, 30 Jan 2008 13:31:18 GMT]]></title><description><![CDATA[<p>Bei einer Tcp/Ip Verbindung ist &quot;nur&quot; der Einstiegspunkt mit einem Endpoint (IP Adr + Port) &quot;fixiert.</p>
<p>Der Server Socket ist auf diesem fixen Port im listen mode und wartet dann im accept auf einkommende verbindungsanfragen. Wenn eine solche kommt, wird ein neues socket erstellt (der return wert von accept), welches auf einen vom betriebssystem vergebenen port gebunden ist.</p>
<p>Dann kann erneut accept aufgerufen werden um wieder verbindungsanfragen zu behandeln.</p>
<p>Edit: Wie das OS die Ports vergibt ist nicht weiter interessant.<br />
Edit2: Mit TcpView kannst Du sehen, welcher Process welche Ports auf welche Interfaces (IP) gebunden hat. <a href="http://technet.microsoft.com/en-us/sysinternals/bb897437.aspx?wt.svl=related" rel="nofollow">http://technet.microsoft.com/en-us/sysinternals/bb897437.aspx?wt.svl=related</a></p>
<p>Gruss Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1446298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1446298</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Wed, 30 Jan 2008 13:31:18 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Ports &#x2F;WinSock on Wed, 30 Jan 2008 13:38:36 GMT]]></title><description><![CDATA[<p>Also muss ich mir keine Sorgen machen, dass ich jedesmal vergesse iwelche Sockets zu shcliessen ? (Hätte ich mir ansich auch nicht gedacht...)</p>
<p>Danke schonmal Gruß Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1446321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1446321</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Wed, 30 Jan 2008 13:38:36 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Ports &#x2F;WinSock on Wed, 30 Jan 2008 13:41:49 GMT]]></title><description><![CDATA[<p>Foxx90 schrieb:</p>
<blockquote>
<p>Also muss ich mir keine Sorgen machen, dass ich jedesmal vergesse iwelche Sockets zu shcliessen ? (Hätte ich mir ansich auch nicht gedacht...)</p>
<p>Danke schonmal Gruß Chris</p>
</blockquote>
<p>Doch, das musst Du. Resourcen die angefordert werden, müssen auch wieder korrekt freigegeben werden. Nur weil gerade funktioniert ist es noch lange nicht korrekt. Es ist schlicht falsch ein nicht mehr benötigtes socket nicht zu schliesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1446323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1446323</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Wed, 30 Jan 2008 13:41:49 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Ports &#x2F;WinSock on Wed, 30 Jan 2008 13:43:04 GMT]]></title><description><![CDATA[<p>Aber es reicht doch (so habs ich gelernt) den Socket mit closesocket (unter windows) zu schliessen und dann ganz am ende WSACleanUp() aufzurufen oder ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1446326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1446326</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Wed, 30 Jan 2008 13:43:04 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Ports &#x2F;WinSock on Wed, 30 Jan 2008 13:59:21 GMT]]></title><description><![CDATA[<p>Ja, closesocket ist korrekt. Ev. hab ich dich falsch verstanden. Wie hast Du es denn gedacht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1446341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1446341</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Wed, 30 Jan 2008 13:59:21 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Ports &#x2F;WinSock on Wed, 30 Jan 2008 14:15:23 GMT]]></title><description><![CDATA[<p>ich dachte die vergabe der ports (vom os) poassiert deshalb immer um eins erhöht weil ich iwie den vorherigen nicht richtig geschlossen hab, aber closesocket reicht ja xD <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Danke nochmal Gruß Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1446353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1446353</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Wed, 30 Jan 2008 14:15:23 GMT</pubDate></item></channel></rss>