欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言廣播的使用詳解

 更新時間:2022年05月04日 09:45:16   作者:liufeng2023  
顧名思義可以把自己的數(shù)據(jù)發(fā)送給在特定范圍內(nèi)的所有人;我們網(wǎng)絡(luò)編程中的廣播一般是通過特定的廣播地址把自己的數(shù)據(jù)發(fā)送給局域網(wǎng)內(nèi)當(dāng)前在線的客戶端

向子網(wǎng)中多臺計算機(jī)發(fā)送消息,并且子網(wǎng)中所有的計算機(jī)都可以接收到發(fā)送方發(fā)送的消息,每個廣播消息都包含一個特殊的IP地址,這個IP中子網(wǎng)內(nèi)主機(jī)標(biāo)志部分的二進(jìn)制全部為1(也就是網(wǎng)絡(luò)號是255)。

? a. 只能在局域網(wǎng)中使用。

? b. 客戶端需要綁定服務(wù)器廣播使用的端口,才可以接收到廣播消息。

只能在局域網(wǎng)中使用;

// 設(shè)置廣播屬性的函數(shù)
int setsockopt(int sockfd, int level, int optname,const void *optval, socklen_t
optlen);
    - 參數(shù):
        - sockfd : 文件描述符
        - level : SOL_SOCKET
        - optname : SO_BROADCAST
        - optval : int類型的值,為1表示允許廣播
        - optlen : optval的大小    

廣播代碼較UDP代碼需要做的改變:

  • 服務(wù)端需要設(shè)置廣播屬性
  • 服務(wù)端不需要使用bind進(jìn)行綁定;
  • 客戶端需要綁定服務(wù)端使用的端口;
//Server
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <arpa/inet.h>
int main() {
    // 1.創(chuàng)建一個通信的socket
    int fd = socket(PF_INET, SOCK_DGRAM, 0);
    if(fd == -1) {
        perror("socket");
        exit(-1);
    }   
    // 2.設(shè)置廣播屬性
    int op = 1;
    setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &op, sizeof(op));
    // 3.創(chuàng)建一個廣播的地址
    struct sockaddr_in cliaddr;
    cliaddr.sin_family = AF_INET;
    cliaddr.sin_port = htons(9999);
    inet_pton(AF_INET, "192.168.193.255", &cliaddr.sin_addr.s_addr);	--注意網(wǎng)絡(luò)號使用255
    // 3.通信
    int num = 0;
    while(1) {
        char sendBuf[128];
        sprintf(sendBuf, "hello, client....%d\n", num++);
        // 發(fā)送數(shù)據(jù)
        sendto(fd, sendBuf, strlen(sendBuf) + 1, 0, (struct sockaddr *)&cliaddr, sizeof(cliaddr));
        printf("廣播的數(shù)據(jù):%s\n", sendBuf);
        sleep(1);
    }
    close(fd);
    return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <arpa/inet.h>
int main() {
    // 1.創(chuàng)建一個通信的socket
    int fd = socket(PF_INET, SOCK_DGRAM, 0);
    if(fd == -1) {
        perror("socket");
        exit(-1);
    }   
    struct in_addr in;
    // 2.客戶端綁定本地的IP和端口
    struct sockaddr_in addr;
    addr.sin_family = AF_INET;
    addr.sin_port = htons(9999);
    addr.sin_addr.s_addr = INADDR_ANY;
    int ret = bind(fd, (struct sockaddr *)&addr, sizeof(addr));
    if(ret == -1) {
        perror("bind");
        exit(-1);
    }
    // 3.通信
    while(1) {
        
        char buf[128];
        // 接收數(shù)據(jù)
        int num = recvfrom(fd, buf, sizeof(buf), 0, NULL, NULL);
        printf("server say : %s\n", buf);
    }
    close(fd);
    return 0;
}

服務(wù)端:

客戶端1: 192.168.193.128

客戶端2: 192.168.193.129

****

到此這篇關(guān)于C語言廣播的使用詳解的文章就介紹到這了,更多相關(guān)C語言廣播內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • C++實現(xiàn)LeetCode(143.鏈表重排序)

    C++實現(xiàn)LeetCode(143.鏈表重排序)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(143.鏈表重排序),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++泛型編程基本概念詳解

    C++泛型編程基本概念詳解

    這一篇介紹一下 C++ 編程中與面向?qū)ο蟛⒘械牧硪淮蠓种А盒途幊?,這一篇主要介紹函數(shù)模板、類模板和成員模板三大部分,需要的朋友可以參考下
    2021-08-08
  • 基于C語言的開源csv解析庫MiniCSV的使用示例

    基于C語言的開源csv解析庫MiniCSV的使用示例

    這篇文章主要為大家詳細(xì)介紹了基于C語言中的開源csv解析庫——MiniCSV的使用示例,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-07-07
  • C語言編程C++自定義個性化類型

    C語言編程C++自定義個性化類型

    這篇文章主要介紹了C語言編程中如何來自定義C++個性化類型,文中附含詳細(xì)的示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • C++中的常對象與常對象成員詳解

    C++中的常對象與常對象成員詳解

    常成員函數(shù)可以訪問常對象中的數(shù)據(jù)成員,但仍然不允許修改常對象中數(shù)據(jù)成員的值。有時在編程時有要求,一定要修改常對象成員中的某個數(shù)據(jù)成員的值(例如類中有一個用于計數(shù)的變量count,其值應(yīng)當(dāng)不能變化)
    2013-10-10
  • C++ 中virtual 虛函數(shù)用法深入了解

    C++ 中virtual 虛函數(shù)用法深入了解

    這篇文章主要介紹了C++ 中virtual 虛函數(shù)用法深入了解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • C語言實現(xiàn)古代時辰計時與現(xiàn)代時間換算

    C語言實現(xiàn)古代時辰計時與現(xiàn)代時間換算

    這篇文章主要為大家詳細(xì)介紹了如何利用C語言實現(xiàn)古代時辰計時與現(xiàn)代時間換算,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • C/C++利用libxml2高效輸出XML大文件詳解

    C/C++利用libxml2高效輸出XML大文件詳解

    這篇文章主要給大家介紹了關(guān)于C/C++利用libxml2高效輸出XML大文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • 基于C++實現(xiàn)的哈夫曼編碼解碼操作示例

    基于C++實現(xiàn)的哈夫曼編碼解碼操作示例

    這篇文章主要介紹了基于C++實現(xiàn)的哈夫曼編碼解碼操作,結(jié)合實例形式分析了C++實現(xiàn)的哈夫曼編碼解碼相關(guān)定義與使用技巧,需要的朋友可以參考下
    2018-04-04
  • C語言中打印特殊圖案的實現(xiàn)代碼

    C語言中打印特殊圖案的實現(xiàn)代碼

    以下代碼實現(xiàn)了在C語言中打印特殊圖案的解決方法。需要的朋友參考下
    2013-05-05

最新評論