<?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[Geschwindigkeit von Netzwerknachrichten erhöhen]]></title><description><![CDATA[<p>Guten Tag.<br />
Seit einem kleinen Weilchen beschäftige ich mit mit der Netzwerkprogrammierung unter Windows<br />
und komme auch zufriedenstellend vorran, eigentlich habe ich auch kein wirkliches Problem bei dem ich im Momment stecken bleibe.<br />
Doch vor kurzem bin auf Raknet gestoßen und habe dort gelesen,<br />
dass bei einer maximalen Nachrichtengröße von 4 Byte 25 000 Nachrichten<br />
pro Sekunde zwischen den Clienten hin und hergeschickt werden.<br />
Als ich dann getestet hatte wie viele Nachrichten bei mir zwischen<br />
den Clienten in einer Sekunde verschickt werden können,<br />
kam ich gerade mal auf ungefähr 2000 und das war der Beste wert, durchschnittlich sind es nur 1700 Nachrichten pro Sekunde (4 byte große nachrichten).</p>
<p>Mein System ist dabei zwar ein wenig schlechter als der, der beim Raknet-Test<br />
verwendet wurde, doch ist der Unterschied in der Leistung vernachlässigbar gering.<br />
Nun gut, Raknet verwendet UDP während ich TCP verwende.<br />
TCP ist zwar nicht so schnell wie UDP, doch ein solch ernormer Unterschied<br />
entsteht doch nicht einfach so (oder stimmt diese Proportion etwa? Also dass man bei UDP 25 000 hinbekommt wenn man bei TCP um die 2000 hat?, kenne ich ma nicht so gut aus)</p>
<p>Meine Frage wäre jetzt also, welche Möglichkeiten es ganz allgemein gibt die Sendegeschwindigkeit zu erhöhen.<br />
Dabei wäre ich schon dankbar wenn einfach mal ein paar relevante Begriffe in den Raum geworfen würden damit ich überhaupt erstmal weiß wonach ich suchen muss.</p>
<p>----<br />
Ich habe vergessen zu erwähnen, dass diese Zahlen zustande kommen wenn die Clienten zwischen denen die Nachrichten hin und hergeschickt werden auf dem Selben Rechner laufen.</p>
<p>cu</p>
<p>EDIT:<br />
Sollte vielleicht noch erwähnen dass ich Windowssockets verwende.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/201006/geschwindigkeit-von-netzwerknachrichten-erhöhen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Apr 2026 08:29:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/201006.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 22 Dec 2007 21:38:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Geschwindigkeit von Netzwerknachrichten erhöhen on Sat, 22 Dec 2007 22:01:08 GMT]]></title><description><![CDATA[<p>Guten Tag.<br />
Seit einem kleinen Weilchen beschäftige ich mit mit der Netzwerkprogrammierung unter Windows<br />
und komme auch zufriedenstellend vorran, eigentlich habe ich auch kein wirkliches Problem bei dem ich im Momment stecken bleibe.<br />
Doch vor kurzem bin auf Raknet gestoßen und habe dort gelesen,<br />
dass bei einer maximalen Nachrichtengröße von 4 Byte 25 000 Nachrichten<br />
pro Sekunde zwischen den Clienten hin und hergeschickt werden.<br />
Als ich dann getestet hatte wie viele Nachrichten bei mir zwischen<br />
den Clienten in einer Sekunde verschickt werden können,<br />
kam ich gerade mal auf ungefähr 2000 und das war der Beste wert, durchschnittlich sind es nur 1700 Nachrichten pro Sekunde (4 byte große nachrichten).</p>
<p>Mein System ist dabei zwar ein wenig schlechter als der, der beim Raknet-Test<br />
verwendet wurde, doch ist der Unterschied in der Leistung vernachlässigbar gering.<br />
Nun gut, Raknet verwendet UDP während ich TCP verwende.<br />
TCP ist zwar nicht so schnell wie UDP, doch ein solch ernormer Unterschied<br />
entsteht doch nicht einfach so (oder stimmt diese Proportion etwa? Also dass man bei UDP 25 000 hinbekommt wenn man bei TCP um die 2000 hat?, kenne ich ma nicht so gut aus)</p>
<p>Meine Frage wäre jetzt also, welche Möglichkeiten es ganz allgemein gibt die Sendegeschwindigkeit zu erhöhen.<br />
Dabei wäre ich schon dankbar wenn einfach mal ein paar relevante Begriffe in den Raum geworfen würden damit ich überhaupt erstmal weiß wonach ich suchen muss.</p>
<p>----<br />
Ich habe vergessen zu erwähnen, dass diese Zahlen zustande kommen wenn die Clienten zwischen denen die Nachrichten hin und hergeschickt werden auf dem Selben Rechner laufen.</p>
<p>cu</p>
<p>EDIT:<br />
Sollte vielleicht noch erwähnen dass ich Windowssockets verwende.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1424973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424973</guid><dc:creator><![CDATA[Kahino]]></dc:creator><pubDate>Sat, 22 Dec 2007 22:01:08 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit von Netzwerknachrichten erhöhen on Sat, 22 Dec 2007 23:52:08 GMT]]></title><description><![CDATA[<p>hi,..<br />
mich wundert das ein bissl, 25000*4*8=0,8Mbit a bissl wenig oder??<br />
ende und gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425023</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Sat, 22 Dec 2007 23:52:08 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit von Netzwerknachrichten erhöhen on Sun, 23 Dec 2007 00:12:50 GMT]]></title><description><![CDATA[<p>Mit größeren Nachrichtenblöcken dürftest du den Durchsatz ordentlich anheben können. Zumindest beim &quot;realen&quot; Versenden über Leitungen gibt es relativ viel Overhead pro Paket. Wie groß da das Ideal-Paket ist, weiß ich nicht, hängt eventuell auch noch von anderen Parametern ab.<br />
Wenn bei dir Client und Server auf demselben Rechner laufen, könnte ich mir aber auch vorstellen, dass relativ viel vom System abhängt, UDP/TCP dürfte hier keine <em>allzu</em> große Rolle spielen, da eigentlich keine Pakete verloren gehen können.</p>
<p>Edit: Es kann auch Einiges von der Programmierung von deinem Server und Client abhängen, vielleicht ist da noch Optimierungsbedarf?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425030</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sun, 23 Dec 2007 00:12:50 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit von Netzwerknachrichten erhöhen on Sun, 23 Dec 2007 00:32:54 GMT]]></title><description><![CDATA[<p>Es ist vielleicht wenig, besonders weil beides auf dem Selbem Rechner ist, doch um die Menge der übertragenen Daten geht es dabei ja auch gar nicht so sehr, sondern um die Menge der Nachrichten.<br />
Würde pro Nachricht mehr Byte übertragen mögen es vielleicht nicht mehr so viele Nachrichten sein, doch wohl durchaus eine größere Datenmenge.<br />
Das Augenmerk bei Raknet liegt ja auf zeitkritische Aufgabenbereiche.<br />
Wie z.B. bei nicht rundenbasierten Netzwerkspielen.</p>
<p>Ich bin im Netzwerkbereich noch ein ziemlicher Anfänger und bin gerade mal soweit ein kleinen Chat gemacht zu haben, da ist es nicht so wichig möglichst Viele Nachrichten möglichst schnell zu übertragen.<br />
Doch arbeite ich ja darauf hin meine kleinen Spielchen Netzwerkfähig zu machen und ich habe bis jetzt noch keinerlei Vorstellungen wie wichtig in diesem Bereich eine hohe Nachrichtenanzahl ist, weil bevor ich mir darüber den Kopf zerbreche wie ich meine Spielchen ein wenig umfunktioniere wollte ich erst allgemein mit der Netzwerkprogrammierung Erfahrungen sammeln.<br />
Falls 1700 Nachrichten a 4 Byte für Zeitkritische Spiele (also viel Aktion, viele Kollisionsmöglichkeiten usw) weit mehr Nachrichten sind als ich brauche (so wie ich es dachte bevor ich die Raknetzahlen sah) soll es fürs Erste gut sein, aber dennoch wäre es dann noch interessant zu erfahren wie man Nachrichtenzahlen erhöht (vielleicht durch eine manuelle Limitierung auf X Byte pro nachricht (???), falls das so einfach geht).</p>
<p>EDIT:<br />
Dein Post hatte ich beim Verfassen diese Nachricht noch nicht gesehen Badestrand.</p>
<p>Aber was meine Programmierung an Server und Client angeht.<br />
Speziell für diesen Test habe ich alles ziemlich roh gestaltet, damit so wenig wie möglich vorhanden ist das die Verbindung behindern könnte.<br />
Ich habe direkt im Quellcode die nötigen Strukturen schon mit den richtigen Portangaben und der IPadresse gefüllt. Keine Klasse oder sonstige ordnenden Strukturen.<br />
Hab alles so roh wie es mir möglich war erstellt.<br />
Das ist also alles in der Standardeinstellung mit möglichst wenig Zeug dazwischen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425032</guid><dc:creator><![CDATA[Kahino]]></dc:creator><pubDate>Sun, 23 Dec 2007 00:32:54 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit von Netzwerknachrichten erhöhen on Sun, 23 Dec 2007 00:26:31 GMT]]></title><description><![CDATA[<p>ahh, stimmt, ich habe gerade nochmal nachgeschaut,.. minimale ethenet framelength ist 64byte,... (inkl. Fill-field)</p>
<p>also bei rund 1700 messages hast du aber immer noch nur rund 0,87 Mbit,..</p>
<p>d.h. wenn du beim aufstocken von 4byte bis rund 40 bytes eine veränderung der geschwindigkeit merkst, liegt das definitiv an deinem source/rechner,..(denk ich mal)</p>
<p>seid gegrüßt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425033</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Sun, 23 Dec 2007 00:26:31 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit von Netzwerknachrichten erhöhen on Sun, 23 Dec 2007 00:46:57 GMT]]></title><description><![CDATA[<p>Ich habe jetzt mal probiert 40 byte zu übertragen um zu schauen in wie weit sich die Anzahl ändert und das Ergebnis ist einfach nur Krank.<br />
Wenn ich 4 Byte ständig hin und her schicke sind es immer noch unter 2000 Nachrichten erhöhe ich das auf 40 Byte sind es oft mehr als 25 000<br />
Meine maximale Zahl war 33 000.<br />
Nur stockt dann alles total bis ich entweder den Server oder den Clienten Schließe und somit den Nachrichtenaustausch stoppe.</p>
<p>EDIT:<br />
Bevor man jetzt auf die Idee kommt ich würde bei der Nachrichtenberechnung irgendein Blödsinn machen, soll gesagt sein, die Methode ist alles andere als geheimnisvoll.<br />
ich habe eine globale intvariable (testzaehler) die zu Beginn auf 0 gesetzt wird.<br />
Sobald der Nachrichtenaustausch beginnt (beginnt per Knopfdruck) wird testzaehler kontinuirlich um 1 erhöt wenn der Server recv() aufruft und eine Nachricht bekommt.<br />
Drückt man beim Server auf eine Schaltfläche wird testzaehler wieder auf 0 gesetzt und ein Timer gestartet der der auf eine Sekunde gestellt ist.<br />
Ist eine Sekunde vergangen wird der Wert von testzaehler ausgegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425035</guid><dc:creator><![CDATA[Kahino]]></dc:creator><pubDate>Sun, 23 Dec 2007 00:46:57 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit von Netzwerknachrichten erhöhen on Sun, 23 Dec 2007 00:45:48 GMT]]></title><description><![CDATA[<p>ok,. poste mal deinen source,.<br />
gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425036</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Sun, 23 Dec 2007 00:45:48 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit von Netzwerknachrichten erhöhen on Sun, 23 Dec 2007 00:59:39 GMT]]></title><description><![CDATA[<p>EDIT<br />
buf ist ein chararray und os ein std::ostringstream<br />
EDIT</p>
<pre><code class="language-cpp">DWORD wEvent, wError;

SOCKET client;
SOCKADDR_IN addr;
WSADATA wsa;

[...]

	WSAStartup(MAKEWORD(2,0), &amp;wsa);
	client = socket( AF_INET, SOCK_STREAM, 0);
	addr.sin_family = AF_INET;
	addr.sin_port = htons(12345);
	addr.sin_addr.S_un.S_addr = inet_addr(&quot;xxx.xx.x.xx&quot;);
	connect(client, (SOCKADDR*)&amp;addr, sizeof(SOCKADDR_IN));

	WSAAsyncSelect(client, modeless,
				WM_EIGENESETZWERK, FD_READ | FD_WRITE | FD_CONNECT | FD_ACCEPT | FD_CLOSE);
</code></pre>
<p>Das passiert in der Main beim Klienten, alles so roh wie möglich und alles direkt eingegeben.</p>
<p>Analog für den Server:</p>
<pre><code class="language-cpp">DWORD wEvent, wError;

SOCKET server;
SOCKET client;
SOCKADDR_IN addr;
WSADATA wsa;

[...]
	WSAStartup(MAKEWORD(2,0), &amp;wsa);
	server = socket( AF_INET, SOCK_STREAM, 0);
	addr.sin_family = AF_INET;
	addr.sin_port = htons(12345);
	addr.sin_addr.S_un.S_addr = ADDR_ANY;
	bind(server, (SOCKADDR*)&amp;addr, sizeof(SOCKADDR_IN));

	listen(server, 8);

	WSAAsyncSelect(server, modeless,
				WM_EIGENESETZWERK, FD_READ | FD_WRITE | FD_CONNECT | FD_ACCEPT | FD_CLOSE);
</code></pre>
<p>Und hier wird das ganze Nachrichtengedöns abgehandelt (für den clienten)</p>
<pre><code class="language-cpp">case WM_EIGENESETZWERK:
		wEvent = WSAGETSELECTEVENT(lParam); // d.h. LOWORD
		wError = WSAGETSELECTERROR(lParam); // d.h. HIWORD
		// Behandlung zweier für WSAAsyncSelect spezifizierte Ereignisse
		switch(wEvent)
		{
		case FD_ACCEPT:   
			break;
		case FD_READ:
			recv(client, buf, 4, 0);
// recv(client, buf, 40, 0);
			send(client, &quot;aaa&quot;, 4, 0); // &lt;- 4 byte-Version
                           //send(client, &quot;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&quot;, 40, 0); // &lt;- 40 byteversion
			break;
</code></pre>
<p>analog für den Server:</p>
<pre><code class="language-cpp">case WM_EIGENESETZWERK:
		wEvent = WSAGETSELECTEVENT(lParam); // d.h. LOWORD
		wError = WSAGETSELECTERROR(lParam); // d.h. HIWORD
		// Behandlung zweier für WSAAsyncSelect spezifizierte Ereignisse
		switch(wEvent)
		{
		case FD_ACCEPT:   
			client = accept(server, 0, 0);
			break;
		case FD_READ:
			recv(client, buf, 4, 0);
// recv(client, buf, 40, 0);
			testzaehler++;

			send(client, &quot;aaa&quot;, 4, 0);
//send(client, &quot;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&quot;, 40, 0); // &lt;- 40 byteversion
			break;
</code></pre>
<p>// EDIT:<br />
Wenn ich auf dem Button beim Server drücke</p>
<pre><code class="language-cpp">case IDOK:
				os &lt;&lt; testzaehler;
				SetWindowText(GetDlgItem(hDlg, IDC_STATIC2), os.str().c_str());
				os.str(&quot;&quot;);				
				SetTimer(hDlg, 1, 1000, 0);
				testzaehler = 0;
				break;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1425042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425042</guid><dc:creator><![CDATA[Kahino]]></dc:creator><pubDate>Sun, 23 Dec 2007 00:59:39 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit von Netzwerknachrichten erhöhen on Sun, 23 Dec 2007 01:10:40 GMT]]></title><description><![CDATA[<p>Bei dem 40 byte-test war der buffer für recv zu klein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Das führte zum stocken, aber weshalb diese großen Nachrichtenzahlen?<br />
Mit angepasstem Buffer bekomme ich bei 4 byete genau so viel nachrichten hin wie mit 40 byte sorry für den Fehler.<br />
Das ist wohl so weil es eien 64 byte mindestlänge gibt wie du erwähntest.<br />
So viel werde ich wohl nie brauchen, gibt es eine Möglichkeit diese zu ändern ohne dass ich in erfahrung bringen muss wie man sich ein eigenes Protoll schreibt?<br />
An einer solchen Anpassung wird wohl der Unterschied liegen.<br />
Wusste nicht dass es eine solche Mindestlänge gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425047</guid><dc:creator><![CDATA[Kahino]]></dc:creator><pubDate>Sun, 23 Dec 2007 01:10:40 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit von Netzwerknachrichten erhöhen on Sun, 23 Dec 2007 01:22:19 GMT]]></title><description><![CDATA[<p>hmmm,..<br />
1.)</p>
<blockquote>
<p>addr.sin_addr.S_un.S_addr = inet_addr(&quot;xxx.xx.x.xx&quot;);</p>
</blockquote>
<p>ich hoffe das hast du nur ersetzt damit man deine i-net addy nich kennt,.. <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=";)"
      alt="😉"
    /></p>
<p>2.)<br />
wieso hast du in einem Clienten einen fd_Set??</p>
<p>3.)<br />
passe doch deinen buffer an,...</p>
<p>4.)<br />
deinen accept befehlt verstehe ich nicht,.. der ist doch</p>
<pre><code class="language-cpp">int accept(int s, struct sockaddr *addr, socklen_t *addrlen);
</code></pre>
<p>5.)<br />
ok, die warteschlange ist 8, acceptierst aber immer nur eine verbindung,<br />
aber schliesst diese wieder nicht,...</p>
<p>ich glaube der fd_set ist ohne schliessen der verbindung, bzw. nur eine verbindung zur gleichen zeit sinnlos, d.h. du hast log. immer mehr offene und AFAIR immer mehr nachrichten die gelesen werden wollen,..wenn du sie nicht schliesst,..</p>
<p>entweder nimmst du n array of sockets, bei accept natürlich neue zuweisen, invalide sofort diskonnecten,...</p>
<p>dann solltest du noch recv() auf null prüfen, denn dann wurde die gegenseite geschlossen bzw. -1 gabs n error,..</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425051</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425051</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Sun, 23 Dec 2007 01:22:19 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit von Netzwerknachrichten erhöhen on Sun, 23 Dec 2007 03:02:55 GMT]]></title><description><![CDATA[<ol>
<li></li>
</ol>
<p>Hab nicht viel Ahnung von Internet/Netzwerken, mir wurde einfach mal gesagt ich soll das machen, weil man meine Internetip einfach rausfinden könne wenn man sich auskennt und wenn man dann in verbindung meine genaue lokale IP kenne gäbe es keine hürde mehr.<br />
So wurde es mir zu mindest gesagt.<br />
Und da es niemanden so schadet mache ich das einfach mal.</p>
<ol start="2">
<li></li>
</ol>
<p>Ich habe den geposteten Quellcode hier durchgeschaut, kann jedoch keine fd_set-Struktur entdecken oO.<br />
Sollte dort jedoch eine sein und ich sehe die nur nicht, hat sie keine Funktion, denn ich verwende sie nicht und ist in dem Fall nur ein Überbleibsel früherer Tests(sofern da überhaupt noch eine ist, wo soll die denn sein?<br />
Falls du diese FD-Nachrichten meinst, die hängen mit WSAASyncSelect zusammen und nicht mit einer fd_set-Struktur).</p>
<ol start="3">
<li></li>
</ol>
<p>Hab ich gemacht, das stocken war dann weg und es wurden nicht soviele Nachrichten versendet, aber genau so viele wie bei 4 byte.</p>
<ol start="4">
<li></li>
</ol>
<p>Nun ja, der parameter s ist ja das Socket welches die Verbindungsanfrage enthält, die restlichen sind ja optional und da ich im Rahmen dieses Tests weder die IP des Clienten noch die größse der addr_in Struktur benötige sind die restlichen Parameter halt 0 und füllen nichts aus.<br />
Zurückgegeben wird ja das (der?) Socket welcher die Anfrage gestellt hat (der client) und wird im Socket gespeichert der den Namen &quot;client&quot; trägt.</p>
<ol start="5">
<li></li>
</ol>
<p>Wie gesagt, dieses Programm ist ein reines Testprogramm zum zählen der Nachrichten.<br />
diese 8 ist eine willkürliche Zahl gewesen die keinen besonderen Sinn hat, dort hätte genauso gut 1 oder auch 30 stehen können.<br />
Ich brauche für diesen Test halt nur eine Verbindung, halt die des einen Clienten mit dem der Server die Nachrichten austauscht damit dieses Hin und her gezählt werden kann.<br />
(und die fd_set-Struktur kann ich immer noch nicht finden).</p>
<p>Und schließen brauche ich mein Socket auch nicht, das ist ein Testprogramm welches neben dem gepostetn gerade noch so viel Code enthält, sodass ich das alles komplilieren und ausführen kann. Wenn das Socket also geschlossen wird, dann deshalb, weil ich das Testprogramm selbst schließe.<br />
recv brauche ich auch nicht auf 0 zu prüfen.<br />
die FD_READ nachricht erhalte ich ausschließlich dann, wenn dort was zu lesen ist. Das hängt mit WSAAsyncSelect zusammen(so viel ich weiß ist das zu mindest so).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425057</guid><dc:creator><![CDATA[Kahino]]></dc:creator><pubDate>Sun, 23 Dec 2007 03:02:55 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit von Netzwerknachrichten erhöhen on Sun, 23 Dec 2007 08:17:38 GMT]]></title><description><![CDATA[<p>Ohne die Rückgabewerte von recv und send zu prüfen ist dein Code falsch. Du übergibst einen 4 Byte großen Puffer aber es kann sein das dieser nicht ganz gefüllt/verschickt wird.</p>
<p>Und ist dir bewußt das WSAAsyncSelect den Socket in den Non-Blocking Modus setzt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425078</guid><dc:creator><![CDATA[scoo]]></dc:creator><pubDate>Sun, 23 Dec 2007 08:17:38 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit von Netzwerknachrichten erhöhen on Sun, 23 Dec 2007 12:20:38 GMT]]></title><description><![CDATA[<p>Ja, mir scheint das der WSAAsync das äquidistante zum FD_set ist (daher die ähnlich mit FD_?)</p>
<p>das sorgt dafür dass das prog nicht wartet bis eine verbindung eingeht,..<br />
nimm mal die WSAAsync struktur erstmal gänzlich raus, die benötigst Du nur falls du im nonblockingmodus arbeiten,.. beziehungsweise ein ganzes SET von eingehenden verbindungen quasi in einem stück abarbeiten willst,...</p>
<p>lies dir dazu mal das tut von c-workers <a href="http://www.c-workers.ch" rel="nofollow">http://www.c-workers.ch</a> durch um einen einfachen client und server im konsolenmodus zu erstellen,..</p>
<p>(copy n paste ? <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=";)"
      alt="😉"
    /> )</p>
<p>sei gegerüßt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425144</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Sun, 23 Dec 2007 12:20:38 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit von Netzwerknachrichten erhöhen on Mon, 24 Dec 2007 14:44:08 GMT]]></title><description><![CDATA[<p>Der Link funktioniert bei mir nicht :/.</p>
<p>Das ich durch WSAAsyncSelect im Nonblockingmodus arbeite wusste ich nicht, doch ist das ein großes Problem wenn sich sowieso Windows darum kümmert?</p>
<p>Also als Konsolenprogramm hatte ich ja schon einen Chat programmiert der der auch mehrere Clienten bedient (hier hatte ich wirklich fd_set verwendet).<br />
Der Grund warum ich jetzt hier WSAASyncSelect verwende ist der,<br />
dass ich in einem Windowsprogramm (mit DirectX und einem Winapi-Fenster) gerne eine Asynchrone Netzwerkverbindung hätte ohne selbst mit Threads oder sowas arbeiten zu müssen.<br />
Ich lese immer wieder wie kompliziert das sei, dort vernünftig zu arbeiten.<br />
Und weil cih sowieso für Windows programmiere (halt DirectX) hatte ich mir gedacht diese WindowsHilfsfunktionen tun nicht weh.</p>
<p>Aber jetzt mal ganz unabhängig welche Methode ich jetzt verwende, gibt es eien Möglichkeit die Mindestpaketgröße zu ändern?<br />
Hier wurde ja mal gesagt die Mindestgröße sei 64 byte.<br />
Was könnte ich also tun um die Mindestgröße z.B. auf 4 byte zu setzen?</p>
<p>Ab jetzt werde ich dann auch in solchen Tests den Rückgabewert prüfen, dachte eigentliclh immer, dass ein &quot;Nichtganzfüllen&quot; bei 4 byte eigentlich eine große Ausnahme wäre.</p>
<p>cu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425649</guid><dc:creator><![CDATA[Kahino]]></dc:creator><pubDate>Mon, 24 Dec 2007 14:44:08 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit von Netzwerknachrichten erhöhen on Mon, 24 Dec 2007 21:43:30 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>Wenn bei dir Client und Server auf demselben Rechner laufen, könnte ich mir aber auch vorstellen, dass relativ viel vom System abhängt, UDP/TCP dürfte hier keine <em>allzu</em> große Rolle spielen, da eigentlich keine Pakete verloren gehen können.</p>
</blockquote>
<p>bei udp können schon pakete verloren gehen. ausserdem ist udp weit weniger komplex als tcp und die tatsache, dass man bei udp auf die prüfsummen verzichten kann, macht es nochmals 'ne ganze ecke schneller. aber grundsätzlich gilt für beide, dass man die pakete schön voll machen muss (bei tcp hat man leider wenig einfluss darauf), um guten durchsatz zu erreichen.<br />
<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>
]]></description><link>https://www.c-plusplus.net/forum/post/1425745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425745</guid><dc:creator><![CDATA[netzwerk-freak]]></dc:creator><pubDate>Mon, 24 Dec 2007 21:43:30 GMT</pubDate></item><item><title><![CDATA[Reply to Geschwindigkeit von Netzwerknachrichten erhöhen on Tue, 25 Dec 2007 00:11:37 GMT]]></title><description><![CDATA[<p>Kahino schrieb:</p>
<blockquote>
<p>Das ich durch WSAAsyncSelect im Nonblockingmodus arbeite wusste ich nicht, doch ist das ein großes Problem wenn sich sowieso Windows darum kümmert?</p>
</blockquote>
<p>Das heisst lediglich das Funktionen die unter normalen Umständen warten würden bis nen Timeout eintritt oder bis Daten da sind, SOCKET_ERROR mit WSAEWOULDBLOCK via WSAGetLastError() zurückliefern täten.<br />
Aber da du Rückgabewerte von recv() etc. sowieso auswerten solltest weniger tragisch <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>
<p>Kahino schrieb:</p>
<blockquote>
<p>Aber jetzt mal ganz unabhängig welche Methode ich jetzt verwende, gibt es eien Möglichkeit die Mindestpaketgröße zu ändern?</p>
</blockquote>
<p>Nicht wirklich...<br />
Man kann zwar mit setsockopt() an den Socket-Buffern rumschrauben, allerdings entsprechen die Socket-Buffergrößen nicht zwangsweise den TCP-Buffern.<br />
Wobei ich meine da könnte man über irgendwelche Registry-Einträge was machen...</p>
<p>Bei UDP können auch lokal Pakete verloren gehen, je nachdem wie schnell man die raus haut und beschäftigt das System so ist...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425769</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425769</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Tue, 25 Dec 2007 00:11:37 GMT</pubDate></item></channel></rss>