<?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[Socket: mehrmaliges senden nicht möglich]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe mal 2 Fragen zu Socketprogrammierung unter Windows.</p>
<p>Es gibt einen Server, der in einer anderen Sprache geschrieben wurde. Dieser akzeptiert Clientverbindungen und zeigt einen vom Client gesendeten String an und gibt für jeden empfangenen String an den Client eine Antwort zurück.</p>
<p>Das funktioniert zumindest mit Clients in der selben Sprache so wie gewollt.</p>
<p>Nun muss das aber mit einem C/C++ - Client funktionieren.</p>
<p>Ich habe mich dabei an den Beispielen der Seite <a href="http://www.pc-adviser.de/socket_programmierung.html" rel="nofollow">http://www.pc-adviser.de/socket_programmierung.html</a> orientiert.</p>
<p>Die Verbindung klappt auch soweit und ich kann einen String an den Server schicken und die entsprechende Rückantwort erhalte ich auch.</p>
<p>Nur treten dabei folgende 2 Probleme auf:<br />
1. Ich kann nur einmal mittels send() Werte an den Server übermitteln.<br />
Alle nachfolgenden Aufrufe werden ignoriert.<br />
2. Der gesendete Sting im Server wird nur angezeigt, wenn ich nach dem Senden recv aufrufe</p>
<pre><code class="language-cpp">bool SoClientTCP::sendLine(string cSend)
{
    int bytes;
	bool bRet = true;

    bytes = send(this-&gt;sock, cSend.c_str(), strlen(cSend.c_str()),0 );
    if ( bytes == -1)
	{
		std::cerr &lt;&lt; &quot;Fehler beim Senden&quot; ; 
		bRet = false;
	}

	return bRet;
}

string SoClientTCP::recvLine()
{
    char buffer[1024];
	int bytes;

	bytes = recv(this-&gt;sock, buffer, strlen(buffer),0 );
	buffer[bytes]='\0';

	return buffer ;
}
</code></pre>
<p>Für jeden Hinweis bin ich dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/134029/socket-mehrmaliges-senden-nicht-möglich</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Jul 2026 21:59:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/134029.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 23 Jan 2006 09:41:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Socket: mehrmaliges senden nicht möglich on Mon, 23 Jan 2006 09:41:09 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe mal 2 Fragen zu Socketprogrammierung unter Windows.</p>
<p>Es gibt einen Server, der in einer anderen Sprache geschrieben wurde. Dieser akzeptiert Clientverbindungen und zeigt einen vom Client gesendeten String an und gibt für jeden empfangenen String an den Client eine Antwort zurück.</p>
<p>Das funktioniert zumindest mit Clients in der selben Sprache so wie gewollt.</p>
<p>Nun muss das aber mit einem C/C++ - Client funktionieren.</p>
<p>Ich habe mich dabei an den Beispielen der Seite <a href="http://www.pc-adviser.de/socket_programmierung.html" rel="nofollow">http://www.pc-adviser.de/socket_programmierung.html</a> orientiert.</p>
<p>Die Verbindung klappt auch soweit und ich kann einen String an den Server schicken und die entsprechende Rückantwort erhalte ich auch.</p>
<p>Nur treten dabei folgende 2 Probleme auf:<br />
1. Ich kann nur einmal mittels send() Werte an den Server übermitteln.<br />
Alle nachfolgenden Aufrufe werden ignoriert.<br />
2. Der gesendete Sting im Server wird nur angezeigt, wenn ich nach dem Senden recv aufrufe</p>
<pre><code class="language-cpp">bool SoClientTCP::sendLine(string cSend)
{
    int bytes;
	bool bRet = true;

    bytes = send(this-&gt;sock, cSend.c_str(), strlen(cSend.c_str()),0 );
    if ( bytes == -1)
	{
		std::cerr &lt;&lt; &quot;Fehler beim Senden&quot; ; 
		bRet = false;
	}

	return bRet;
}

string SoClientTCP::recvLine()
{
    char buffer[1024];
	int bytes;

	bytes = recv(this-&gt;sock, buffer, strlen(buffer),0 );
	buffer[bytes]='\0';

	return buffer ;
}
</code></pre>
<p>Für jeden Hinweis bin ich dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/973655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/973655</guid><dc:creator><![CDATA[robert.S]]></dc:creator><pubDate>Mon, 23 Jan 2006 09:41:09 GMT</pubDate></item><item><title><![CDATA[Reply to Socket: mehrmaliges senden nicht möglich on Mon, 23 Jan 2006 12:59:03 GMT]]></title><description><![CDATA[<p>diese SOCKET Funktionen arbeiten syscron, es könnte sein dass du dein Programm blockst beim aufruf von recv.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/973853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/973853</guid><dc:creator><![CDATA[Stu]]></dc:creator><pubDate>Mon, 23 Jan 2006 12:59:03 GMT</pubDate></item><item><title><![CDATA[Reply to Socket: mehrmaliges senden nicht möglich on Mon, 23 Jan 2006 13:36:20 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort.</p>
<p>Ich habe den Fehler gefunden. Die Implementierung des Servers in der anderen Sprache war leicht fehlerbehaftet bzw. das Client-Server-Zusammenspiel.<br />
Da ich von einem funktionierenden System ausgegangen bin hatte ich den Fehler anfangs dort nicht gesucht.</p>
<p>Statt bei einer akzeptierten Clientverbindung auf diesen Socket zurückzugreifen, wurde für jede Datenübermittlung an den Server von ein und demselben Client ein neuer Socket geöffnet und dieser für die Kommunikation genutzt.</p>
<p>Durch die Beseitigung des Fehlers haben sich beide Probleme gelöst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/973887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/973887</guid><dc:creator><![CDATA[robert.S]]></dc:creator><pubDate>Mon, 23 Jan 2006 13:36:20 GMT</pubDate></item></channel></rss>