socket网络编程——UDP编程流程「建议收藏」

socket网络编程——UDP编程流程「建议收藏」UDP提供的是无连接、不可靠的、数据报服务。编程流程如下:socket()方法用来创建套接字,使用udp协议时,选择数据报服务SOCK_DGRAM。sendto()方法用来发送数据,由于UDP是无连接的,每次发送数据都需要指定对端的地址(IP和端口)。recvfrom()方法接收数据,每次都需要传给该方法一个地址结构来存放发送端的地址。recvfrom()方法可以接收所有客户端发送给当前应用程序的数据,并不是只能接收某一个客户端的数据。UDP服务端代码:#include<stdi

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

UDP 提供的是无连接、不可靠的、数据报服务。编程流程如下:
在这里插入图片描述
socket()方法用来创建套接字,使用udp协议时,选择数据报服务SOCK_DGRAM
sendto()方法用来发送数据,由于 UDP 是无连接的,每次发送数据都需要指定对端的地址(IP 和端口)。
recvfrom()方法接收数据,每次都需要传给该方法一个地址结构来存放发送端的地址。
recvfrom()方法可以接收所有客户端发送给当前应用程序的数据,并不是只能接收某一个客户端的数据。
UDP服务端代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<assert.h>
#include<sys/socket.h>
#include<arpa/inet.h>

int main()
{ 
   
    int sockfd = socket(AF_INET,SOCK_DGRAM,0);
    assert(sockfd != -1);

    struct sockaddr_in saddr,caddr;
    saddr.sin_family = AF_INET;
    saddr.sin_port = htons(6000);
    saddr.sin_addr.s_addr = inet_addr("127.0.0.1");

    int res = bind(sockfd,(struct sockaddr*)&saddr,sizeof(saddr));
    assert(res != -1);

    while(1)
    { 
   
        int len = sizeof(caddr);
        char buff[128] = { 
   0};
        recvfrom(sockfd,buff,127,0,(struct sockaddr*)&caddr,&len);
        printf("ip:%s port:%d buff = %s\n",inet_ntoa(caddr.sin_addr),ntohs(caddr.sin_port),buff);
        sendto(sockfd,"OK",2,0,(struct sockaddr*)&caddr,len);
    }

    close(sockfd);

    exit(0);
}

UDP客户端代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<assert.h>
#include<sys/socket.h>
#include<arpa/inet.h>

int main()
{ 
   
    int sockfd = socket(AF_INET,SOCK_DGRAM,0);
    assert(sockfd != -1);

    struct sockaddr_in saddr;
    memset(&saddr,0,sizeof(saddr));
    saddr.sin_family = AF_INET;
    saddr.sin_port = htons(6000);
    saddr.sin_addr.s_addr = inet_addr("127.0.0.1");

    while(1)
    { 
   
        char buff[128] = { 
   0};
        printf("please inut:\n");
        fgets(buff,128,stdin);
        if(strncmp(buff,"end",3) == 0)
        { 
   
            break;
        }
        sendto(sockfd,buff,strlen(buff)-1,0,(struct sockaddr*)&saddr,sizeof(saddr));
        memset(buff,0,128);

        int len = sizeof(saddr);
        recvfrom(sockfd,buff,127,0,(struct sockaddr*)&saddr,&len);
        printf("buff = %s\n",buff);

    }

    exit(0);
}

运行结果 (一个服务端,打开两个客户端):
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/197420.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 领峰贵金属:黄金现货投资的魅力究竟在何处[通俗易懂]

    领峰贵金属:黄金现货投资的魅力究竟在何处[通俗易懂]  相信现在很多人已经听说过或者初步了解了黄金现货投资,很多人因为它赚到了大钱,也有人正想要投入到黄金现货投资当中,它的魅力究竟在何处,为什么那么多的人喜欢它?  第一:黄金现货投资简单易学。  (1)对比其它投资理财来说黄金现货的基础知识要容易很多,种类比较单一,所以选择上也不会出现像股票或者基金那样“万里挑一”的情况,是一种非常简单易学的投资理财产品。  (2)真正学起来,投资者们会发现有一些黄金现货的基本投资方式十分实用,新手投资者掌握了这些就可以进行简单的投资理财了,要比其它理财产品简单

    2022年5月8日
    49
  • Android开发project师,前行路上的14项技能

    Android开发project师,前行路上的14项技能

    2021年8月30日
    64
  • webstorm激活码永久2021_通用破解码

    webstorm激活码永久2021_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    370
  • werkzeug LocalProxy

    werkzeug LocalProxy1.当我们代理的理解fromwerkzeug.localimportLocalStack,LocalProxyl_stack=LocalStack()l_stack.push({‘name’:’wang’})l_stack.push({‘name’:’wei’})defget_name():returnl_stack.pop()#不用代理name=get_name()print(f”nameis{name[‘name’]}”)print(f”

    2022年10月6日
    0
  • goland 2021.11.4 激活【中文破解版】

    (goland 2021.11.4 激活)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月29日
    43
  • C语言之一个有趣的关机程序「建议收藏」

    C语言之一个有趣的关机程序「建议收藏」★一个有趣的关机程序#include&lt;stdio.h&gt;intmain(){charinput[]={0};system("shutdown-s-t60")//这是Windows系统下的一个关机命令flag:printf("你的电脑将在一分钟后关机,如果输入"我是猪",就会取消关机!\n请输入:");scanf("%s",input);if(0==strcm…

    2022年7月22日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号