Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >linux socket udp编程_linux网络编程socket

linux socket udp编程_linux网络编程socket

作者头像
全栈程序员站长
发布于 2022-10-04 12:13:01
发布于 2022-10-04 12:13:01
10.6K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

文章目录

前言

浅谈UDP

提示:以下是本篇文章正文内容,下面案例可供参考

一、UDP是什么

UDP是一种不可靠的、无连接的、数据报服务。

二、UDP 数据报服务特点

发送端应用程序每执行一次写操作,UDP 模块就将其封装成一个 UDP 数据报发送。接收端必须及时针对每一个 UDP 数据报执行读操作,否则就会丢包。并且,如果用户没有指定足够的应用程序缓冲区来读取 UDP 数据,则 UDP 数据将被截断。

因此,采用UDP协议时必须要求接收端可以一次性收取完发送端一次发送的数据,不然就会造成数据丢失

二、UDP 编程流程

1.服务器

代码如下(示例):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int main()
{ 

int sockfd = socket(AF_INET,SOCK_DGRAM,0);
assert( sockfd != -1 );
struct sockaddr_in saddr,caddr;
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");
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,(strcut sockaddr*)&caddr,&len);
printf("buff=%s\n",buff);
if(strncmp(buff,"end",3)==0)
{ 

break;
}
sendto(sockfd,"ok",2,0,(struck sockaddr*)&caddr,sizeof(caddr));
}
close(sockfd);
exit(0);
}

2.客户端

代码如下(示例):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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("input\n");
fgets(buff,127,stdin);
if(strncmp(buff,"end",3)==0)
{ 

break;
}
sendto(sockfd,buff,strlen(buff),0,(struct sockaddr*)&saddr,sizeof(saddr));
memset(&buff,128,0);
int len=sizeof(saddr);
recvfrom(sockfd,buff,127,0,(struct sockaddr*)&saddr,&len);
printf("recv:%s\n",buff);
}
close(sockfd);
exit(0);
}

3.输出结果

总结

UDP是一种无连接的传输方式,所以可以多个客户端同时发送。 服务器端关闭立马重启,客户端仍然可以发送数据。服务器端也可以立即收数据。

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月8日 上,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【计算机网络】Linux下简单的UDP服务器(超详细)
我们把服务器封装成一个类,当我们定义出一个服务器对象后需要马上初始化服务器,而初始化服务器需要做的第一件事就是创建套接字。
咬咬
2025/06/02
460
【计算机网络】Linux下简单的UDP服务器(超详细)
socket网络编程——UDP编程流程「建议收藏」
socket()方法用来创建套接字,使用udp协议时,选择数据报服务SOCK_DGRAM。 sendto()方法用来发送数据,由于 UDP 是无连接的,每次发送数据都需要指定对端的地址(IP 和端口)。 recvfrom()方法接收数据,每次都需要传给该方法一个地址结构来存放发送端的地址。 recvfrom()方法可以接收所有客户端发送给当前应用程序的数据,并不是只能接收某一个客户端的数据。 UDP服务端代码:
全栈程序员站长
2022/10/02
4690
socket网络编程——UDP编程流程「建议收藏」
Linux下网络编程-UDP协议探测在线好友
UDP协议 相对TCP协议来讲属于不可靠协议,UDP协议是广播方式发送数据,没有服务器和客户端的概念。
DS小龙哥
2022/05/11
2.2K0
Linux下网络编程-UDP协议探测在线好友
socket网络编程(一)——初识socket
出现一项技术,首先我们弄懂一下,为什么要出现。那么为什么要出现socket这玩意呢?可以很简单的用一句话来概括:
一点sir
2024/01/10
4190
socket网络编程(一)——初识socket
初识网络 · udp的基本使用
在本文的这个系列,会涉及到不同协议的基本使用到背后的原理机制,那么从一开始我们先实操,比如我们先尝试编写一款具有回显功能的Udp服务器,再尝试对它加一点业务,最后,我们甚至可以使用多线程部分进行服务器的一个升级。
_lazy
2025/04/08
960
初识网络 · udp的基本使用
【Linux网络编程】Socket编程--UDP:实现服务器接收客服端的消息
<font color= black face="楷体" size=3><center>🌈个人主页:南桥几晴秋
南桥
2024/10/24
2280
【Linux网络编程】Socket编程--UDP:实现服务器接收客服端的消息
【计网】UDP Echo Server与Client实战:从零开始构建简单通信回显程序
我们之前讲解了关于socket编程的一些基础知识和接口函数,今天我们就来小试牛刀一下,自己编写一个简单的echo_server程序,将客户端的数据在服务端打印出来(利用udp协议实现)!
用户11316056
2024/11/19
2530
【计网】UDP Echo Server与Client实战:从零开始构建简单通信回显程序
Linux网络编程——UDP组播编程
在IPv4中组播的地址范围是:224.0.0.0到239.255.255.255。
Coder-ZZ
2023/09/04
4.1K0
Linux网络编程——UDP组播编程
【Linux网络编程】Socket编程--UDP(第一弹):实现客户端和服务器互相发送消息
任何一个UDP服务通信中,都需要有一个int sockfd的文件描述符,按照系统编程中所说,这里打印出来的文件描述符应该是3,因为0,1,2已经被占用了。
南桥
2024/10/20
2610
【Linux网络编程】Socket编程--UDP(第一弹):实现客户端和服务器互相发送消息
【网络】UDP的应用场景
我们可以在服务端udpServer.hpp中设置一个回调函数 _callback,具体的逻辑通过udpServer.cc中由外部进行传入
平凡的人1
2023/10/15
2580
【网络】UDP的应用场景
linux网络编程系列(三)--tcp和udp的基本函数调用过程及如何选择
TCP是TCP/IP体系中面向连接的传输层协议,它提供全双工和可靠交付的服务。它采用许多机制来确保端到端结点之间的可靠数据传输,如采用序列号、确认重传、滑动窗口等。
cpp加油站
2021/04/16
1K0
linux网络编程系列(三)--tcp和udp的基本函数调用过程及如何选择
sendfile函数–零拷贝
零拷贝:零拷贝技术可以减少数据拷贝和共享总线操作的次数,消除通信数据在存储器之间不必要的中间拷贝过程,有效地提高通信效率,是设计高速接口通道、实现高速服务器和路由器的关键技术之一。 sendfile
全栈程序员站长
2022/09/01
8960
【在Linux世界中追寻伟大的One Piece】Socket编程UDP(续)
枫叶丹
2024/10/31
970
【在Linux世界中追寻伟大的One Piece】Socket编程UDP(续)
Udp协议Socket编程
  本次socket编程需要使用到 日志文件,此为具体日志编写过程。以及 线程池,线程池原理比较简单,看注释即可。
用户11029129
2024/11/17
1480
Udp协议Socket编程
【计网】从零开始使用UDP进行socket编程 --- 客户端与服务端的通信实现
我们了解了网络编程的大概,今天我们就来使用UDP协议来实现客户端与服务端之间的通信过程:
叫我龙翔
2024/09/17
3560
Linux:网络编程套接字及UDP
        而要使用软件进行通信,就得先把这个软件启动起来,也就是进程,所以网络通信的本质就是进程间通信!!只不过是不同主机下的进程!!
小陈在拼命
2025/02/11
3770
Linux:网络编程套接字及UDP
Linux应用开发【第六章】网络编程应用开发
​ 要编写通过计算机网络通信的程序,首先要确定这些程序同通信的协议(protocol),在设计一个协议的细节之前,首先要分清程序是由哪个程序发起以及响应何时产生。
韦东山
2021/12/15
1.4K0
Linux应用开发【第六章】网络编程应用开发
python recvfrom函数详解_UDP sendto和recvfrom使用详解「建议收藏」
在网络编程中,UDP运用非常广泛。很多网络协议是基于UDP来实现的,如SNMP等。大家常常用到的局域网文件传输软件飞鸽传书也是基于UDP实现的。
全栈程序员站长
2022/09/15
2.4K0
Linux下Socket编程(六)——udp简介
中文叫用户数据报协议,属于传输层。UDP是面向非连接的协议,它不与对方建立连接,而是直接把我要发的数据报发给对方。所以UDP适用于一次传输数据量很少、对可靠性要求不高的或对实时性要求高的应用场景。正因为UDP无需建立类如三次握手的连接,而使得通信效率很高。
用户2929716
2018/08/23
2.9K0
Linux下Socket编程(六)——udp简介
【Linux】:Socket编程UDP(EchoServer(聊天)| DictServer(中译英字典)| ChatServer(简单聊天室))
在上篇文章 【Linux】: Socket 编程 里面已经关于 socket 网络编程的前置知识,这里我们就来实际运用一下其 套接字 来实现相关的套接字编程吧
IsLand1314
2025/01/17
1270
【Linux】:Socket编程UDP(EchoServer(聊天)| DictServer(中译英字典)| ChatServer(简单聊天室))
推荐阅读
相关推荐
【计算机网络】Linux下简单的UDP服务器(超详细)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验