91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vxworks中如何實現BroadCast

發布時間:2021-12-22 10:28:34 來源:億速云 閱讀:252 作者:小新 欄目:互聯網科技

這篇文章主要介紹了vxworks中如何實現BroadCast,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

有了單播和組播,廣播也跑不了。廣播,BroadCast,與單播的區別就是地址不同。廣播用的地址是255.255.255.255;而且廣播數據不會被路由器轉發,限定于局域網內,否則就是網絡風暴了

廣播的代碼其實更簡單,直接參考單播/組播的例子寫一個

Server是在單播的基礎上略加改動

  • 調用socket()打開一個Socket

  • 調用bind()指定Port信息

  • 調用setsockopt()加入廣播

  • 調用recvfrom()阻塞接收

  • 最后,調用close()關閉Socket

vxworks中如何實現BroadCast

廣播Client更簡單了

  • 調用socket()打開一個Socket

  • 指定廣播地址和Port信息

  • 調用sendto()發送數據

  • 最后,調用close()關閉Socket

vxworks中如何實現BroadCast

完整代碼如下


#include <stdio.h>   /* pritnf() */#include <stdLib.h>  /* malloc() */#include <sockLib.h> /* socket() */#include <inetLib.h> /* struct sockaddr_in */
#define HOST_PORT 60000#define MIN_SIZE  10#define MIN_TIMES 10
void broadServer (int port, int size, int times){    struct sockaddr_in localAddr;    struct sockaddr_in peerAddr;    int   addrSize = sizeof(struct sockaddr);    int   opt = 1;    int   fd;    int   num;    char *buffer;    if(port  <= 2000) port  = HOST_PORT;    if(size  <= 0)    size  = MIN_SIZE;    if(times <= 0)    times = MIN_TIMES;    printf (">, size, port);        /* 打開Socket */    fd = socket (AF_INET, SOCK_DGRAM, 0);        /* 指定本地地址信息 */    localAddr.sin_family      = AF_INET;    localAddr.sin_port        = htons (port);    localAddr.sin_addr.s_addr = INADDR_ANY;    bind (fd, (struct sockaddr *)&localAddr, sizeof(struct sockaddr));
   /* 加入廣播 */    setsockopt(fd, SOL_SOCKET, SO_BROADCAST, (char *)&opt, sizeof(int));
   buffer = (char *)malloc (size);    while ((times--)>0)        {        /* 接收廣播數據 */        num = recvfrom (fd, buffer, size, 0,                       (struct sockaddr *)&peerAddr, &addrSize);        if (num < 0) break;        printf (" broadServer: recv %d chars from %s\n",                  num, inet_ntoa(peerAddr.sin_addr));        }
   /* 關閉Socket */    close (fd);    free (buffer);    printf (" broadServer: end\n");    }

#include <stdio.h>   /* pritnf() */#include <stdLib.h>  /* malloc() */#include <sockLib.h> /* socket() */#include <inetLib.h> /* struct sockaddr_in */
#define HOST_PORT 60000#define MIN_SIZE  1#define MIN_TIMES 1
void broadClient (int port, int size, int times){    struct sockaddr_in serverAddr;    int   opt = 1;    int   fd;      char *buffer;    int   num;        if(port <= 2000) port = HOST_PORT;    if(size <= 0)    size = MIN_SIZE;    if(times<= 0)    times= MIN_TIMES;    buffer = (char *)malloc(size);    for(num=0; num<size; num++) buffer[num] = (num%26)+'a';
   /* 服務器地址信息 */    serverAddr.sin_family      = AF_INET;    serverAddr.sin_port        = htons (port);    serverAddr.sin_addr.s_addr = htonl(INADDR_BROADCAST);    printf (" broadClient: try to send %d chars %d times to %s:%d\n",              size, times, inet_ntoa(serverAddr.sin_addr), port);
    /* 打開Socket */    fd = socket (AF_INET, SOCK_DGRAM, 0);
   while ((times--)>0)        {        /* 發送數據到BroadCast Server */        num = sendto(fd, buffer, size, 0,                    (struct sockaddr *)&serverAddr, sizeof(struct sockaddr));        printf (" broadClient: send %d chars\n", num);        }
   /* 關閉Socket */    close (fd);    free (buffer);    printf (" broadClient: send finished\n");    }

運行情況如下如下

vxworks中如何實現BroadCast

感謝你能夠認真閱讀完這篇文章,希望小編分享的“vxworks中如何實現BroadCast”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巢湖市| 高尔夫| 阿拉善左旗| 福泉市| 邯郸市| 皋兰县| 木里| 百色市| 南丰县| 本溪| 留坝县| 岱山县| 台中市| 永定县| 德江县| 万荣县| 周宁县| 璧山县| 理塘县| 三原县| 府谷县| 庆阳市| 敦煌市| 防城港市| 白银市| 化隆| 临安市| 杭州市| 亳州市| 台东县| 习水县| 东兴市| 望奎县| 古浪县| 遂平县| 鸡泽县| 镇雄县| 霍林郭勒市| 饶河县| 中江县| 华池县|