<?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[vom Socket lesen -- &amp;quot;if (connect(fd, (struct sockaddr*)&amp;amp;remote, sizeof(remote)) &amp;lt; 0) {&amp;quot;]]></title><description><![CDATA[<p>Hallo,</p>
<p>bin gerade dabei an einer Socket Anwendung zu arbeiten. Ziel ist es einen Datenstrom z.B.( 519/0x207 : sD : 00 00 01 28 01 28 01 28) auf einem Server an Port 7235 gezielt lesen zu können. Das läuft so weit alles. Was ich nicht verstehe ist, ich habe das Gefühl bei &quot;len = recv(fd, returnstring, sizeof(returnstring), 0);&quot; nicht den derzeit gerade angebotenen Datensatz zu lesen, sondern jeden Datensatz nacheinander abzuarbeiten. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> Ist diese der Fall? Wie kann ich einen aktuellen Datensatz lesen, ohne die zwischendurch über den Socket gegangenen Nachrichten verwenden zu müssen?</p>
<p>Dank und Gruß Markus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/171891/vom-socket-lesen-quot-if-connect-fd-struct-sockaddr-amp-remote-sizeof-remote-lt-0-quot</link><generator>RSS for Node</generator><lastBuildDate>Mon, 06 Jul 2026 18:38:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/171891.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 30 Jan 2007 13:29:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to vom Socket lesen -- &amp;quot;if (connect(fd, (struct sockaddr*)&amp;amp;remote, sizeof(remote)) &amp;lt; 0) {&amp;quot; on Tue, 30 Jan 2007 13:29:40 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>bin gerade dabei an einer Socket Anwendung zu arbeiten. Ziel ist es einen Datenstrom z.B.( 519/0x207 : sD : 00 00 01 28 01 28 01 28) auf einem Server an Port 7235 gezielt lesen zu können. Das läuft so weit alles. Was ich nicht verstehe ist, ich habe das Gefühl bei &quot;len = recv(fd, returnstring, sizeof(returnstring), 0);&quot; nicht den derzeit gerade angebotenen Datensatz zu lesen, sondern jeden Datensatz nacheinander abzuarbeiten. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> Ist diese der Fall? Wie kann ich einen aktuellen Datensatz lesen, ohne die zwischendurch über den Socket gegangenen Nachrichten verwenden zu müssen?</p>
<p>Dank und Gruß Markus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1219789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1219789</guid><dc:creator><![CDATA[MGolbs]]></dc:creator><pubDate>Tue, 30 Jan 2007 13:29:40 GMT</pubDate></item><item><title><![CDATA[Reply to vom Socket lesen -- &amp;quot;if (connect(fd, (struct sockaddr*)&amp;amp;remote, sizeof(remote)) &amp;lt; 0) {&amp;quot; on Tue, 30 Jan 2007 15:47:40 GMT]]></title><description><![CDATA[<p>Das ist nicht leicht. Was recv macht ist im Grunde einfach n Bytes aus dem Socket-Buffer zu lesen. Wenn du Daten nun vorschieben willst, musst du mit Out Of Band-Paketen (OOB) arbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1219946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1219946</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Tue, 30 Jan 2007 15:47:40 GMT</pubDate></item><item><title><![CDATA[Reply to vom Socket lesen -- &amp;quot;if (connect(fd, (struct sockaddr*)&amp;amp;remote, sizeof(remote)) &amp;lt; 0) {&amp;quot; on Tue, 30 Jan 2007 18:31:23 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>besten Dank. Es ist also so, dass recv(fd, ..) eine Nachricht nach der anderen aus dem &quot;Speicher des Socket&quot; liest? Meine Applikation hatte ich erst schon mal in Freepascal geschrieben. Dort war das etwas anders. Man konnte den aktuellen Wert der auf dem Socket lag einfach einlesen. Das sah etwa so aus:</p>
<p>conek:=0;<br />
Addr.family:=AF_INET;<br />
Addr.port:=17180; (* 7235 shl 8; <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="😉"
    /><br />
while (millisekundex &lt; helptime) do<br />
begin<br />
....<br />
readln (Siin,line);<br />
...<br />
writeln(Soout,LineA);<br />
flush(Soout);<br />
close (Siin);<br />
close (Soout);<br />
end;<br />
....</p>
<p>Gibt es eine Möglichkeit nach dem Lesen den Socket zu schließen und danach z.B. ca. 100ms wieder zu öffnen? Ist wahrscheinlich nicht zu sinnvoll, oder? Beim Freepascal wurde z.B. erst mal in die Variable geschrieben und dann zielgerichtet das reine Senden aktiviert. Ich habe auch Probleme mit dem C Programm, das es den Server bei der Socketarbeit deutlich mehr belastet, bis hin das der Server hängt. Wobei nicht mehr Daten und Anfragen laufen. Das Problem trat beim Freepascal Code nie auf. Am Server kann ich leider nichts machen, kommt nicht von mir. Doch was mit dem Freepascal geht, muss doch mit C mindestens genauso gut funktionieren. Ich habe das Gefühl, das Freepascal den kompletten String sofort auf den Socket legt. Kann es sein, dass beim C da eventuell segmentweise mit Unterbrechungen auf den Socket geschrieben wird? Eventuell sollte ich einen anderen Ansatz zum Auslesen von Daten aus dem Socket aller 90..100ms wählen? Nur weiss ich nicht recht wie ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Gruß Markus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220081</guid><dc:creator><![CDATA[MGolbs]]></dc:creator><pubDate>Tue, 30 Jan 2007 18:31:23 GMT</pubDate></item></channel></rss>