<?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[Einfacher SIP Request mit C++]]></title><description><![CDATA[<p>Hi ich versuche gerade mich ein bisschen mit dem SIP und UDP Protokoll vertraut zu machen, scheitere jedoch schon an einem ganz simplen Request.</p>
<pre><code>char cBuf[256];
char ip[INET_ADDRSTRLEN];
int s=0, iCheck=0;
s=socket(AF_INET, SOCK_DGRAM, NULL); // UDP Socket erstellen
struct sockaddr_in addr;
struct hostent *heAddr;
heAddr = gethostbyname(&quot;sip.1und1.de&quot;); // 1und1 als Test
inet_ntop (AF_INET, heAddr-&gt;h_addr_list[0], ip, INET_ADDRSTRLEN);
printf(&quot;IP: %s\n&quot;, ip); // nur zum Testen, ob die IP richtig ist

addr.sin_addr.s_addr = inet_addr(ip);
addr.sin_port = htons(5060);
addr.sin_family = AF_INET;

// der folgende SIP request sollte nicht funktionieren aber doch zumindest eine Antwort bekommen, oder?
char cMessage[]=&quot;INVITE test SIP/2.0\r\n\r\n&quot;;

iCheck=sendto(s, cMessage, strlen(cMessage), NULL, (sockaddr*)&amp;addr, sizeof(addr));
printf(&quot;Gesendete Zeichen: %i\n&quot;, iCheck);
printf(&quot;Gesendete Nachricht: %s\n&quot;, cMessage);
unsigned int iFLen=sizeof(sockaddr_in);

iCheck=recvfrom(s, &amp;cBuf, 255, MSG_DONTWAIT, (sockaddr*)&amp;addr, &amp;iFLen);
printf(&quot;Empfangene Zeichen: %i\n&quot;, iCheck);
printf(&quot;Empfangene Nachricht: %s\n&quot;, cBuf);
printf(&quot;Errno: %i\n&quot;, errno);

close(s);
</code></pre>
<p>Folgende Ausgabe wird erzeugt:</p>
<p>`</p>
<p>IP: 212.227.19.131</p>
<p>Gesendete Zeichen: 23</p>
<p>Gesendete Nachricht: INVITE test SIP/2.0</p>
<p>Empfangene Zeichen: -1</p>
<p>Empfangene Nachricht:</p>
<p>Errno: 11</p>
<p>`</p>
<p>Die Nachricht wird korrekt gesendet, erhält aber keine Antwort (EAGAIN). Wenn ich recvfrom blocken lasse, blockt es bis in alle Ewigkeit. Ich vermute das ich irgendein Prinzip von UDP oder SIP nicht verstanden habe <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>Danke schonmal für jede Hilfe,<br />
MfG JoneZ</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/255893/einfacher-sip-request-mit-c</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 19:59:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/255893.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 05 Dec 2009 07:55:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Einfacher SIP Request mit C++ on Sat, 05 Dec 2009 07:57:42 GMT]]></title><description><![CDATA[<p>Hi ich versuche gerade mich ein bisschen mit dem SIP und UDP Protokoll vertraut zu machen, scheitere jedoch schon an einem ganz simplen Request.</p>
<pre><code>char cBuf[256];
char ip[INET_ADDRSTRLEN];
int s=0, iCheck=0;
s=socket(AF_INET, SOCK_DGRAM, NULL); // UDP Socket erstellen
struct sockaddr_in addr;
struct hostent *heAddr;
heAddr = gethostbyname(&quot;sip.1und1.de&quot;); // 1und1 als Test
inet_ntop (AF_INET, heAddr-&gt;h_addr_list[0], ip, INET_ADDRSTRLEN);
printf(&quot;IP: %s\n&quot;, ip); // nur zum Testen, ob die IP richtig ist

addr.sin_addr.s_addr = inet_addr(ip);
addr.sin_port = htons(5060);
addr.sin_family = AF_INET;

// der folgende SIP request sollte nicht funktionieren aber doch zumindest eine Antwort bekommen, oder?
char cMessage[]=&quot;INVITE test SIP/2.0\r\n\r\n&quot;;

iCheck=sendto(s, cMessage, strlen(cMessage), NULL, (sockaddr*)&amp;addr, sizeof(addr));
printf(&quot;Gesendete Zeichen: %i\n&quot;, iCheck);
printf(&quot;Gesendete Nachricht: %s\n&quot;, cMessage);
unsigned int iFLen=sizeof(sockaddr_in);

iCheck=recvfrom(s, &amp;cBuf, 255, MSG_DONTWAIT, (sockaddr*)&amp;addr, &amp;iFLen);
printf(&quot;Empfangene Zeichen: %i\n&quot;, iCheck);
printf(&quot;Empfangene Nachricht: %s\n&quot;, cBuf);
printf(&quot;Errno: %i\n&quot;, errno);

close(s);
</code></pre>
<p>Folgende Ausgabe wird erzeugt:</p>
<p>`</p>
<p>IP: 212.227.19.131</p>
<p>Gesendete Zeichen: 23</p>
<p>Gesendete Nachricht: INVITE test SIP/2.0</p>
<p>Empfangene Zeichen: -1</p>
<p>Empfangene Nachricht:</p>
<p>Errno: 11</p>
<p>`</p>
<p>Die Nachricht wird korrekt gesendet, erhält aber keine Antwort (EAGAIN). Wenn ich recvfrom blocken lasse, blockt es bis in alle Ewigkeit. Ich vermute das ich irgendein Prinzip von UDP oder SIP nicht verstanden habe <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>Danke schonmal für jede Hilfe,<br />
MfG JoneZ</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1818109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1818109</guid><dc:creator><![CDATA[Lord JoneZ]]></dc:creator><pubDate>Sat, 05 Dec 2009 07:57:42 GMT</pubDate></item><item><title><![CDATA[Reply to Einfacher SIP Request mit C++ on Sat, 05 Dec 2009 12:31:16 GMT]]></title><description><![CDATA[<p>Benutz doch nicht so was lowlevel mäßiges.<br />
Boost hat asio als Socketimplementierung, ansonsten gibts in vielen Frameworks schon gute Klassen dafür (Qt oder wxWidgets z.b.).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1818166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1818166</guid><dc:creator><![CDATA[phlox81]]></dc:creator><pubDate>Sat, 05 Dec 2009 12:31:16 GMT</pubDate></item><item><title><![CDATA[Reply to Einfacher SIP Request mit C++ on Sun, 06 Dec 2009 11:02:12 GMT]]></title><description><![CDATA[<p>phlox81 schrieb:</p>
<blockquote>
<p>Benutz doch nicht so was lowlevel mäßiges.<br />
Boost hat asio als Socketimplementierung, ansonsten gibts in vielen Frameworks schon gute Klassen dafür (Qt oder wxWidgets z.b.).</p>
</blockquote>
<p>Da ich eher an die Implementierung einer Serveranwendung für SIP dachte, ist die Nutzung von Frameworks nicht so sinnvoll. Nach deinem Vorschlag habe ich das ganze mit boost programmiert - jedoch mit demselben Ergebnis:</p>
<pre><code>int iCheck=0;
boost::asio::io_service io_service;

udp::resolver resolver(io_service);
udp::resolver::query query(udp::v4(), &quot;sip.1und1.de&quot;, &quot;5060&quot;);
udp::endpoint receiver_endpoint = *resolver.resolve(query);

udp::socket socket(io_service);
socket.open(udp::v4());

std::string sSend=&quot;INVITE test SIP/2.0\r\n\r\n&quot;;
iCheck = socket.send_to(boost::asio::buffer(sSend), receiver_endpoint);
std::cout &lt;&lt; &quot;Sent bytes: &quot; &lt;&lt; iCheck &lt;&lt; std::endl;
udp::endpoint sender_endpoint;
boost::array&lt;char, 128&gt; cRecv;
socket.receive_from(boost::asio::buffer(cRecv), sender_endpoint);
std::cout &lt;&lt; cRecv.data() &lt;&lt; std::endl;
</code></pre>
<p>Ausgabe:<br />
<code>Sent bytes: 36</code></p>
<p>Nach dieser Ausgabe blockt das Programm wieder auf ewig.</p>
<p>MfG JoneZ</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1818535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1818535</guid><dc:creator><![CDATA[Lord JoneZ]]></dc:creator><pubDate>Sun, 06 Dec 2009 11:02:12 GMT</pubDate></item><item><title><![CDATA[Reply to Einfacher SIP Request mit C++ on Sun, 06 Dec 2009 11:34:11 GMT]]></title><description><![CDATA[<p>dann guck halt mit nem sniffer nach was ein richtige client sendet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1818546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1818546</guid><dc:creator><![CDATA[´´]]></dc:creator><pubDate>Sun, 06 Dec 2009 11:34:11 GMT</pubDate></item><item><title><![CDATA[Reply to Einfacher SIP Request mit C++ on Sun, 06 Dec 2009 12:16:31 GMT]]></title><description><![CDATA[<p>Habe das Problem gelöst:</p>
<p>Es lag doch am SIP-Request, der muss offenbar schon alle Header enthalten sonst gibts nicht mal ein Bad Request zurück.</p>
<p>Danke für alle Hilfe<br />
MfG JoneZ</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1818572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1818572</guid><dc:creator><![CDATA[Lord JoneZ]]></dc:creator><pubDate>Sun, 06 Dec 2009 12:16:31 GMT</pubDate></item></channel></rss>