<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: UDP C размер принятого пакета</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID9/10253.html</link>
    <description>Есть некий код&lt;br&gt;&lt;br&gt;#include&amp;lt;stdio.h&amp;gt;//printf&lt;br&gt;#include&amp;lt;string.h&amp;gt; //memset&lt;br&gt;#include&amp;lt;stdlib.h&amp;gt; //exit(0);&lt;br&gt;#include&amp;lt;arpa/inet.h&amp;gt;&lt;br&gt;#include&amp;lt;sys/socket.h&amp;gt;&lt;br&gt;&lt;br&gt;#define SERVER &quot;127.0.0.1&quot;&lt;br&gt;#define BUFLEN 512//Max length of buffer&lt;br&gt;#define PORT 8888//The port on which to send data&lt;br&gt;&lt;br&gt;void die(char *s)&lt;br&gt;&#123;&lt;br&gt;perror(s);&lt;br&gt;exit(1);&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;int main(void)&lt;br&gt;&#123;&lt;br&gt;struct sockaddr_in si_other;&lt;br&gt;int s, i, slen=sizeof(si_other);&lt;br&gt;char buf&#091;BUFLEN&#093;;&lt;br&gt;char message&#091;BUFLEN&#093;;&lt;br&gt;&lt;br&gt;if ( (s=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1)&lt;br&gt;&#123;&lt;br&gt;die(&quot;socket&quot;);&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;memset((char *) &amp;si_other, 0, sizeof(si_other));&lt;br&gt;si_other.sin_family = AF_INET;&lt;br&gt;si_other.sin_port = htons(PORT);&lt;br&gt;&lt;br&gt;if (inet_aton(SERVER , &amp;si_other.sin_addr) == 0) &lt;br&gt;&#123;&lt;br&gt;fprintf(stderr, &quot;inet_aton() failed&#092;n&quot;);&lt;br&gt;exit(1);&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;while(1)&lt;br&gt;&#123;&lt;br&gt;printf(&quot;Enter message : &quot;);&lt;br&gt;gets(message);&lt;br&gt;&lt;br&gt;//send the message&lt;br&gt;if (sendto(s, message, strlen(message) , 0 , (struct sockaddr *) &amp;si_other, slen)==-1)&lt;br&gt;&#123;&lt;br&gt;die(&quot;sendto()&quot;);&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;//receive a reply </description>

<item>
    <title>UDP C размер принятого пакета (eRIC)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID9/10253.html#3</link>
    <pubDate>Tue, 08 Jan 2019 19:30:58 GMT</pubDate>
    <description>&amp;gt; Как определить размер принятого пакета функцией recvfrom() ?&lt;br&gt;&lt;br&gt;пробовать типа recv_len = recvfrom(....)&lt;br&gt;&lt;br&gt;цитата из man:&lt;br&gt;ssize_t recv(int sockfd, void *buf, size_t len, int flags);&lt;br&gt;&lt;br&gt;ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,&lt;br&gt;                 struct sockaddr *src_addr, socklen_t *addrlen);&lt;br&gt;&lt;br&gt;ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags);&lt;br&gt;&lt;br&gt;All three routines return the length of the message on successful completion. If a message is too long to fit in the supplied buffer, excess bytes may be discarded depending on the type of socket the message is received from. &lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>UDP C размер принятого пакета (Филимон Новогодний)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID9/10253.html#2</link>
    <pubDate>Tue, 01 Jan 2019 21:16:55 GMT</pubDate>
    <description>&amp;gt; Как определить размер принятого пакета функцией recvfrom() ?&lt;br&gt;&lt;br&gt;Насчёт пакета не знаю, но, если что, recvfrom возвращает количество принятых байт&lt;br&gt;</description>
</item>

<item>
    <title>UDP C размер принятого пакета (wizard22)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID9/10253.html#1</link>
    <pubDate>Tue, 01 Jan 2019 11:09:03 GMT</pubDate>
    <description>UDP и TCP - это общецелевые сетевые протоколы передачи данных.&lt;br&gt;Формат данных для протоколов построенных на базе их определяются либо собственным протоколом пользователя либо известными стандартными протоколами. Примеры: SMTP,HTTP,TFTP.&lt;br&gt;Соответственно, длины пакетов определены в протоколах.&lt;br&gt;Для полной ясности лучше посмотреть хорошую книгу по сетевому программированию, например, Ричарда Стевенса.&lt;br&gt;С НГ!&lt;br&gt;</description>
</item>

</channel>
</rss>
