<?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[C UDP Socket, Fehler bei sendto() [Invalid argument]]]></title><description><![CDATA[<p>Hallo!</p>
<p>Erst mal bin ich unsicher, ob ich in dieses Forum posten soll, da ich aber kein eigenes C Forum gefunden habe und C++ ja soviel ich weiß komplett &quot;abwärts kompatibel&quot; ist, werde ich einfach mal hier fragen.</p>
<p>Also ich habe seit langem nichts mehr in C programmiert und finde gerade zurück, da ich für ein privates Projekt UDP Sender und Empfänger coden muss. Ich habe mir das BEEJ Tutorial durchgelesen und dann auch was geschrieben. Der UDP Empfänger scheint zu laufen, jedenfalls schmeißt er keine Fehler. Der Sender macht mir aber noch Probleme.</p>
<p>Das Problem: sendto() wirft den Fehler Invalid argument. Dass die Argumente aber zumindest vom Typ her richtig sind vermute ich einfach mal, da der Compiler mir nichts gegenteiliges mitteilt.</p>
<p>Ich weiß jetzt leider nicht weiter und hoffe einfach mal, dass mir hier jemand helfen kann.</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;string.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/socket.h&gt;
#include &lt;netdb.h&gt;
#include &lt;arpa/inet.h&gt;
#include &lt;errno.h&gt;

int main(int argc, char *argv[]){
        struct addrinfo aiHints, *aiResults;
        int fdSocket;
        int returnValue;
        char szBuff[1024];

        snprintf(szBuff, 20, &quot;TESTMSG\0&quot;);

        memset(&amp;aiHints, 0, sizeof aiHints);

        aiHints.ai_family = AF_UNSPEC;
        aiHints.ai_socktype = SOCK_DGRAM;
        aiHints.ai_flags = AI_PASSIVE;

//        getaddrinfo(&quot;fe80::21b:77ff:fe80:bb97&quot;, &quot;16782&quot;, &amp;aiHints, &amp;aiResults);
        getaddrinfo(NULL, &quot;16782&quot;, &amp;aiHints, &amp;aiResults);

        fdSocket = socket(aiResults-&gt;ai_family, aiResults-&gt;ai_socktype, aiResults-&gt;ai_protocol);
        if(fdSocket == -1) perror(&quot;ERROR: socket(): &quot;);
        printf(&quot;socket() returned: %d\n&quot;, fdSocket);
        returnValue = sendto(fdSocket, (const char*)szBuff, strlen(szBuff),0, (struct sockaddr*)aiResults, sizeof (struct sockaddr));
        printf(&quot;sendto() returned: %d\n&quot;, returnValue);
        perror(&quot;sendto() ERROR: &quot;);

        return 0;
}
</code></pre>
<p>Das ist die Source von meinem Sender. Für jede Hilfe bin ich dankbar.</p>
<p>MfG<br />
s-thet</p>
<p>EDIT: Danke für den Hinweis mit dem Ansi C Forum, muss wohl meinen Parser mal umschreiben <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="😉"
    /> In das Webzeugs gehört der Thread aber nicht glaub ich, da es hier ja nicht um eine &quot;webbasierte sprache&quot; handelt. Naja die Moderatoren werden mir hoffentlch vergeben und den Thread verschieben, Sorry nochmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/234707/c-udp-socket-fehler-bei-sendto-invalid-argument</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 08:45:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/234707.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 21 Feb 2009 12:36:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C UDP Socket, Fehler bei sendto() [Invalid argument] on Sat, 21 Feb 2009 12:50:49 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Erst mal bin ich unsicher, ob ich in dieses Forum posten soll, da ich aber kein eigenes C Forum gefunden habe und C++ ja soviel ich weiß komplett &quot;abwärts kompatibel&quot; ist, werde ich einfach mal hier fragen.</p>
<p>Also ich habe seit langem nichts mehr in C programmiert und finde gerade zurück, da ich für ein privates Projekt UDP Sender und Empfänger coden muss. Ich habe mir das BEEJ Tutorial durchgelesen und dann auch was geschrieben. Der UDP Empfänger scheint zu laufen, jedenfalls schmeißt er keine Fehler. Der Sender macht mir aber noch Probleme.</p>
<p>Das Problem: sendto() wirft den Fehler Invalid argument. Dass die Argumente aber zumindest vom Typ her richtig sind vermute ich einfach mal, da der Compiler mir nichts gegenteiliges mitteilt.</p>
<p>Ich weiß jetzt leider nicht weiter und hoffe einfach mal, dass mir hier jemand helfen kann.</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;string.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/socket.h&gt;
#include &lt;netdb.h&gt;
#include &lt;arpa/inet.h&gt;
#include &lt;errno.h&gt;

int main(int argc, char *argv[]){
        struct addrinfo aiHints, *aiResults;
        int fdSocket;
        int returnValue;
        char szBuff[1024];

        snprintf(szBuff, 20, &quot;TESTMSG\0&quot;);

        memset(&amp;aiHints, 0, sizeof aiHints);

        aiHints.ai_family = AF_UNSPEC;
        aiHints.ai_socktype = SOCK_DGRAM;
        aiHints.ai_flags = AI_PASSIVE;

//        getaddrinfo(&quot;fe80::21b:77ff:fe80:bb97&quot;, &quot;16782&quot;, &amp;aiHints, &amp;aiResults);
        getaddrinfo(NULL, &quot;16782&quot;, &amp;aiHints, &amp;aiResults);

        fdSocket = socket(aiResults-&gt;ai_family, aiResults-&gt;ai_socktype, aiResults-&gt;ai_protocol);
        if(fdSocket == -1) perror(&quot;ERROR: socket(): &quot;);
        printf(&quot;socket() returned: %d\n&quot;, fdSocket);
        returnValue = sendto(fdSocket, (const char*)szBuff, strlen(szBuff),0, (struct sockaddr*)aiResults, sizeof (struct sockaddr));
        printf(&quot;sendto() returned: %d\n&quot;, returnValue);
        perror(&quot;sendto() ERROR: &quot;);

        return 0;
}
</code></pre>
<p>Das ist die Source von meinem Sender. Für jede Hilfe bin ich dankbar.</p>
<p>MfG<br />
s-thet</p>
<p>EDIT: Danke für den Hinweis mit dem Ansi C Forum, muss wohl meinen Parser mal umschreiben <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="😉"
    /> In das Webzeugs gehört der Thread aber nicht glaub ich, da es hier ja nicht um eine &quot;webbasierte sprache&quot; handelt. Naja die Moderatoren werden mir hoffentlch vergeben und den Thread verschieben, Sorry nochmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1667510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1667510</guid><dc:creator><![CDATA[s-thet]]></dc:creator><pubDate>Sat, 21 Feb 2009 12:50:49 GMT</pubDate></item><item><title><![CDATA[Reply to C UDP Socket, Fehler bei sendto() [Invalid argument] on Sat, 21 Feb 2009 12:45:44 GMT]]></title><description><![CDATA[<p>s-thet schrieb:</p>
<blockquote>
<p>da ich aber kein eigenes C Forum gefunden habe</p>
</blockquote>
<p>Schau nochmal nach, das Forum nennt sich &quot;ANSI C&quot;. Und für Netzwerkgeschichten gibts noch das &quot;Webzeugs&quot; Forum...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1667518</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1667518</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 21 Feb 2009 12:45:44 GMT</pubDate></item><item><title><![CDATA[Reply to C UDP Socket, Fehler bei sendto() [Invalid argument] on Sat, 21 Feb 2009 13:23:36 GMT]]></title><description><![CDATA[<p>Probiers mal mit AF_INET anstelle von AF_UNSPEC.<br />
Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1667535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1667535</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Sat, 21 Feb 2009 13:23:36 GMT</pubDate></item><item><title><![CDATA[Reply to C UDP Socket, Fehler bei sendto() [Invalid argument] on Sat, 21 Feb 2009 13:52:46 GMT]]></title><description><![CDATA[<p>habe ich schon probiert, da sagte er mir das würde vom protokoll nicht unterstützt. anscheinend ist der standard bei lenny (debian 5.0) ipv6, das habe ich jedenfalls daraus geschlossen, dass er mit AF_INET (ipv4) nicht klarkam.</p>
<p>EDIT: Lösung gefunden!</p>
<pre><code class="language-cpp">1 #include &lt;stdio.h&gt;
  2 #include &lt;string.h&gt;
  3 #include &lt;sys/types.h&gt;
  4 #include &lt;sys/socket.h&gt;
  5 #include &lt;netdb.h&gt;
  6 #include &lt;arpa/inet.h&gt;
  7 #include &lt;errno.h&gt;
  8 
  9 int main(int argc, char *argv[]){
 10         struct addrinfo aiHints, *aiResults;
 11         int fdSocket;
 12         int returnValue;
 13         char szBuff[1024];
 14 
 15         struct sockaddr_in *helpme;
 16 
 17         snprintf(szBuff, 20, &quot;TESTMSG\0&quot;);
 18 
 19         memset(&amp;aiHints, 0, sizeof aiHints);
 20 
 21         aiHints.ai_family = AF_INET;
 22         aiHints.ai_socktype = SOCK_DGRAM;
 23         aiHints.ai_flags = AI_PASSIVE;
 24         aiHints.ai_protocol = IPPROTO_UDP;
 25 
 26 //      getaddrinfo(&quot;fe81::21b:77ff:fe80:bb97&quot;, &quot;16782&quot;, &amp;aiHints, &amp;aiResults);
 27         returnValue = getaddrinfo(NULL, &quot;16782&quot;, &amp;aiHints, &amp;aiResults);
 28         if(returnValue != 0)
 29                 printf(&quot;getaddr() ERROR: %s\n&quot;, gai_strerror(returnValue));
 30         fdSocket = socket(aiResults-&gt;ai_family, aiResults-&gt;ai_socktype, aiResults-&gt;ai_protocol);
 31         if(fdSocket == -1) 
 32                 perror(&quot;ERROR: socket(): &quot;);
 33         sendto(fdSocket, (const char*)szBuff, strlen(szBuff),0, aiResults-&gt;ai_addr, aiResults-&gt;ai_addrlen);
 34         freeaddrinfo(aiResults);
 35 
 36         return 0;
 37 }
</code></pre>
<p>der hinweis mit der family auf AF_INET setzen war gar nicht verkehrt, scheint aber nur in zusammenhang mit spezifizierung des protokolls wirklich zu funktionieren.</p>
<p>danke allen die geholfen haben, kann dann geschlossen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1667540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1667540</guid><dc:creator><![CDATA[s-thet]]></dc:creator><pubDate>Sat, 21 Feb 2009 13:52:46 GMT</pubDate></item></channel></rss>