国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux中UDP服務(wù)端和客戶端

這篇具有很好參考價值的文章主要介紹了Linux中UDP服務(wù)端和客戶端。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1 服務(wù)端代碼

#include <stdio.h>
#include <head.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
                                                                                        
#define PORT 6666 //端口號:1024~49191
#define IP "192.168.1.110"http://"192.168.122.120"

int main(int argc, const char *argv[])
{
    //創(chuàng)建報式套接字
    int sfd = socket(AF_INET, SOCK_DGRAM, 0);
    if(sfd < 0)
    {
        ERR_MSG("socket");
        return -1;
    }
    printf("sfd = %d\n",sfd);

    //填充服務(wù)器自身的地址信息結(jié)構(gòu)體,真實的地址信息結(jié)構(gòu)體根據(jù)地址族制定
    //AF_INET : man 7 ip
    struct sockaddr_in sin;
    sin.sin_family         = AF_INET;      //必須填A(yù)F_INET
    sin.sin_port           = htons(PORT);  //端口號:1024~49151
    sin.sin_addr.s_addr    = inet_addr(IP);//本機IP:ifconfig

    //綁定服務(wù)器的地址信息結(jié)構(gòu)體到套接字上
    if(bind(sfd, (struct sockaddr*)&sin,sizeof(sin)) < 0)
    {
        ERR_MSG("bind");
        return -1;
    }
    printf("bind success\n");

    char buf[128]="";
    ssize_t res=0;
    struct sockaddr_in cin;
    socklen_t addrlen= sizeof(cin);

    while(1)
    {
        bzero(buf,sizeof(buf));
        //接收數(shù)據(jù)
        //res = recvfrom(sfd,buf,sizeof(buf),0,NULL,NULL);
        //res = recv(sfd,buf,sizeof(buf),0);
        //res = read(sfd,buf,sizeof(buf));
        res = recvfrom(sfd,buf,sizeof(buf),0,(struct sockaddr*)&cin,&addrlen);
        if(res < 0)
        {
            ERR_MSG("recvfrom");
            return -1;
        }
        printf("[%s : %d] : %s\n",\
                inet_ntoa(cin.sin_addr),ntohs(cin.sin_port),buf);

        //buf[sizeof(buf)-1]=0;
        strcat(buf,"*_*");
        //發(fā)送數(shù)據(jù)
        if(sendto(sfd,buf,sizeof(buf),0,(struct sockaddr*)&cin,sizeof(cin))<0)
        {
            ERR_MSG("sendto");
            return -1;
        }
        printf("sendto success\n");
    }
    //關(guān)閉文件描述符
    close(sfd);
    return 0;
}
                                                                                        

2 客戶端代碼

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <head.h>

#define PORT 6666               //端口號:服務(wù)器綁定的端口號
#define IP "192.168.1.110"http://"192.168.122.109"    //IP:服務(wù)器綁定的IP


int main(int argc, const char *argv[])
{
    //創(chuàng)建報式套接字
    int cfd = socket(AF_INET, SOCK_DGRAM, 0);
    if(cfd < 0)
    {
        ERR_MSG("socket");
        return -1;
    }
    printf("cfd = %d\n", cfd);



    //綁定客戶端的地址信息結(jié)構(gòu)體到套接字上---->非必須綁定
    //若不綁定,則操作系統(tǒng)會給客戶端綁定運行主機的IP和隨機端口

    //填充服務(wù)器的地址信息結(jié)構(gòu)體,給sendto函數(shù)使用
    //要發(fā)給誰,就填誰的地址信息
    struct sockaddr_in sin;
    sin.sin_family      = AF_INET;      //必須填A(yù)F_INET
    sin.sin_port        = htons(PORT);      //端口號:服務(wù)器綁定的端口號                     
    sin.sin_addr.s_addr = inet_addr(IP);    //IP:服務(wù)器綁定的IP


    char buf[128] = "";
    ssize_t res = 0;
    struct sockaddr_in rcvaddr;     //存儲接收到的數(shù)據(jù)包從哪里來
    socklen_t addrlen = sizeof(rcvaddr);

    while(1)
    {
        bzero(buf, sizeof(buf));
        printf("請輸入>>> ");
        fgets(buf, sizeof(buf), stdin);
        buf[strlen(buf)-1] = 0;

        //發(fā)送數(shù)據(jù)
        if(sendto(cfd, buf, sizeof(buf), 0, (struct sockaddr*)&sin,  sizeof(sin)) < 0)
        {
            ERR_MSG("sendto");
            return -1;
        }
        printf("sendto success\n");

        //接收數(shù)據(jù)
        res = recvfrom(cfd, buf, sizeof(buf), 0, (struct sockaddr*)&rcvaddr, &addrlen);
        //res = recvfrom(cfd, buf, sizeof(buf), 0, NULL, NULL);
        //res = recv(cfd, buf, sizeof(buf), 0);
        //res = read(cfd, buf, sizeof(buf));
        if(res < 0)
        {
            ERR_MSG("recvfrom");
            return -1;
        }
        printf("[%s : %d] : %s\n", \
                inet_ntoa(rcvaddr.sin_addr), ntohs(rcvaddr.sin_port), buf);

    }

    //關(guān)閉文件描述符
    close(cfd);


    return 0;
}

3 服務(wù)端結(jié)果

ubuntu@ubuntu:03_udp$ gcc 01_ser.c -o ser
ubuntu@ubuntu:03_udp$ ./ser
sfd = 3
bind success
[192.168.1.110 : 48368] : 123
sendto success
[192.168.1.110 : 48368] : 123
sendto success
[192.168.1.110 : 48368] : 123
sendto success
[192.168.1.110 : 48368] : 333
sendto success
^C
ubuntu@ubuntu:03_udp$ 

4 客戶端結(jié)果

ubuntu@ubuntu:03_udp$ gcc 02_cli.c -o cli
ubuntu@ubuntu:03_udp$ ./cli
cfd = 3
請輸入>>> 123
sendto success
[192.168.1.110 : 6666] : 123*_*
請輸入>>> 123
sendto success
[192.168.1.110 : 6666] : 123*_*
請輸入>>> 123
sendto success
[192.168.1.110 : 6666] : 123*_*
請輸入>>> 333
sendto success
[192.168.1.110 : 6666] : 333*_*
請輸入>>> ^C
ubuntu@ubuntu:03_udp$ 

文章來源地址http://www.zghlxwxcb.cn/news/detail-648415.html

到了這里,關(guān)于Linux中UDP服務(wù)端和客戶端的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 《TCP/IP網(wǎng)絡(luò)編程》閱讀筆記--基于Windows實現(xiàn)Hello Word服務(wù)器端和客戶端

    《TCP/IP網(wǎng)絡(luò)編程》閱讀筆記--基于Windows實現(xiàn)Hello Word服務(wù)器端和客戶端

    目錄 1--Hello Word服務(wù)器端 2--客戶端 3--編譯運行 3-1--編譯服務(wù)器端 3-2--編譯客戶端 3-3--運行 運行結(jié)果:

    2024年02月10日
    瀏覽(62)
  • 網(wǎng)絡(luò)編程六--UDP服務(wù)器客戶端

    網(wǎng)絡(luò)編程六--UDP服務(wù)器客戶端

    UDP(User Datagram Protocol)稱為用戶數(shù)據(jù)報協(xié)議,是一種無連接的傳輸協(xié)議。 UDP的主要應(yīng)用在即使丟失部分?jǐn)?shù)據(jù),也不影響整體效果的場景。例實時傳輸視頻或音頻時,即使丟失部分?jǐn)?shù)據(jù),也不會影響整體效果,只是會有輕微的畫面抖動或雜音。 UDP服務(wù)器/客戶端不像TCP那樣,交

    2024年02月15日
    瀏覽(19)
  • 【網(wǎng)絡(luò)編程】實現(xiàn)UDP/TCP客戶端、服務(wù)器

    【網(wǎng)絡(luò)編程】實現(xiàn)UDP/TCP客戶端、服務(wù)器

    需要云服務(wù)器等云產(chǎn)品來學(xué)習(xí)Linux的同學(xué)可以移步/--騰訊云--/--阿里云--/--華為云--/官網(wǎng),輕量型云服務(wù)器低至112元/年,新用戶首次下單享超低折扣。 ? 目錄 一、UDP 1、Linux客戶端、服務(wù)器 1.1udpServer.hpp 1.2udpServer.cc 1.3udpClient.hpp 1.4udpClient.cc 1.5onlineUser.hpp 2、Windows客戶端 二、T

    2024年02月06日
    瀏覽(18)
  • 【網(wǎng)絡(luò)編程】網(wǎng)絡(luò)套接字&udp通用服務(wù)器和客戶端

    【網(wǎng)絡(luò)編程】網(wǎng)絡(luò)套接字&udp通用服務(wù)器和客戶端

    端口號(port)是傳輸層協(xié)議的內(nèi)容: 端口號是一個2字節(jié)16位的整數(shù)(uint16) 端口號用來標(biāo)識主機上的一個進(jìn)程 IP地址+port能夠標(biāo)識網(wǎng)絡(luò)上的某一臺主機和某一個進(jìn)程 一個端口號只能被一個進(jìn)程占用 此處我們先對TCP(Transmission Control Protocol 傳輸控制協(xié)議) 有一個直觀的認(rèn)識,后面再

    2024年02月16日
    瀏覽(1114)
  • UDP數(shù)據(jù)報網(wǎng)絡(luò)編程(實現(xiàn)簡單的回顯服務(wù)器,客戶端)

    ? ? ? ?回顯服務(wù)器表示客戶端發(fā)的是啥,服務(wù)器就返回啥,主要是為了熟悉UDP數(shù)據(jù)報網(wǎng)絡(luò)編程的基本步驟 ????????對于程序的所有分析都寫到了代碼上 當(dāng)我們用idea實現(xiàn)了上面的代碼后可以通過idea如何開啟多個客戶端(一個代碼開啟多個客戶端運行)來檢驗多個客戶端向

    2024年02月13日
    瀏覽(20)
  • 【網(wǎng)絡(luò)編程】基于UDP數(shù)據(jù)報實現(xiàn)回顯服務(wù)器/客戶端程序

    【網(wǎng)絡(luò)編程】基于UDP數(shù)據(jù)報實現(xiàn)回顯服務(wù)器/客戶端程序

    個人主頁:兜里有顆棉花糖 歡迎 點贊?? 收藏? 留言? 加關(guān)注??本文由 兜里有顆棉花糖 原創(chuàng) 收錄于專欄【網(wǎng)絡(luò)編程】【Java系列】 本專欄旨在分享學(xué)習(xí)網(wǎng)絡(luò)編程的一點學(xué)習(xí)心得,歡迎大家在評論區(qū)交流討論?? 前言 我們?nèi)绻胱寫?yīng)用程序進(jìn)行網(wǎng)絡(luò)通信的話,就需要調(diào)用傳

    2024年02月04日
    瀏覽(28)
  • 《TCP/IP網(wǎng)絡(luò)編程》閱讀筆記--基于UDP的服務(wù)器端/客戶端

    《TCP/IP網(wǎng)絡(luò)編程》閱讀筆記--基于UDP的服務(wù)器端/客戶端

    目錄 1--TCP和UDP的主要區(qū)別 2--基于 UDP 的數(shù)據(jù) I/O 函數(shù) 3--基于 UDP 的回聲服務(wù)器端/客戶端 4--UDP客戶端Socket的地址分配 5--UDP存在數(shù)據(jù)邊界 6--UDP已連接與未連接的設(shè)置 ① TCP 提供的是可靠數(shù)據(jù)傳輸服務(wù),而 UDP 提供的是不可靠數(shù)據(jù)傳輸服務(wù); ② UDP 在結(jié)構(gòu)上比 TCP 更簡潔,其不會

    2024年02月09日
    瀏覽(53)
  • 【Java網(wǎng)絡(luò)編程】基于UDP-Socket 實現(xiàn)客戶端、服務(wù)器通信

    【Java網(wǎng)絡(luò)編程】基于UDP-Socket 實現(xiàn)客戶端、服務(wù)器通信

    ? 哈嘍,大家好~我是你們的老朋友: 保護(hù)小周??? 本期為大家?guī)淼氖蔷W(wǎng)絡(luò)編程的 UDP Socket 套接字,基于 UDP協(xié)議的 Socket 實現(xiàn)客戶端服務(wù)器通信 ,Socket 套接字可以理解為是,傳輸層給應(yīng)用層提供的一組 API,如此程序,確定不來看看嘛~~ 本期收錄于博主的專欄 : JavaEE_保

    2024年02月02日
    瀏覽(111)
  • linux搭建http源【服務(wù)端和客戶端詳細(xì)說明】

    linux搭建http源【服務(wù)端和客戶端詳細(xì)說明】

    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 [root@master ~]# 關(guān)閉防火墻和selinux firewall的話,直接 systemctl stop firewalld 即可 如果使用的是iptables,則吧firewalld替換成iptables [root@master ~]# systemctl is-active firewalld active [root@master ~]# [root@master ~]# systemctl stop firewalld [root@master ~]# [root@m

    2024年04月13日
    瀏覽(33)
  • JavaEE & UDP簡易翻譯服務(wù)器 & 網(wǎng)絡(luò)編程示例2 & TCP回顯服務(wù)器,回顯客戶端

    JavaEE & UDP簡易翻譯服務(wù)器 & 網(wǎng)絡(luò)編程示例2 & TCP回顯服務(wù)器,回顯客戶端

    禁止白嫖 T T 點點贊唄 這個翻譯器主要是在上一章的回顯服務(wù)器和回顯客戶端上進(jìn)行修改 修改了計算響應(yīng)的過程, 即process方法 1.1 重寫方法 重寫方法是Java中的一種重要手段 指在一個類的子類里,對父類的一個方法進(jìn)行重新定義! 而父類的權(quán)限級別要大于等于子類~ 【除了

    2023年04月16日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包