udp - IPv4 上面的 UDP 协议.
SYNOPSIS (总览)
#include <sys/socket.h>
#include
<netinet/in.h>
udp_socket = socket(PF_INET, SOCK_DGRAM,
0);
DESCRIPTION(描述)
这是一个 RFC768 中的用户数据报协议的实现. 它实现无连接的, 不可靠的数据报信息包服务.
信息包可能在它们传输到达之前重新排序或者重复. UDP 通过生成和检查校验和来俘获传输错误.
当创建一个 UDP 套接字时, 它的本地和远程地址是不确定的. 可以使用带一个有效目的地址作为参数的 sendto(2) 或者
sendmsg(2) 立即发送数据报.如果套接字上调用了 connect(2) 时, 则设置默认的目的地址,
数据报可以使用 send(2) 或者 write(2) 发送而不需要指定目的地址. 也可以通过传递一个地址给
sendto(2) 或者 sendmsg(2) 来发送到其它目的地址. 为了接收信息包,套接字必须首先用
bind(2) 绑定一个本地地址, 如果没有这么做, 套接字层在第一个用户接收请求时将自动分配一个本地端口.
所有接收操作只返回一个信息包. 当信息包小于所传递的缓冲区时, 则只返回那些数据, 当信息包大于所传递的缓冲区时,则截断信息包并设置
MSG_TRUNC 标志.
IP 选项可以使用描述于 ip(7) 中的套接字选项发送或接收. 只有打开了合适的 sysctl 时,
内核才处理它们(不过即使关闭了它们, 仍然会传递给用户). 参见 ip(7).
如果设置了 MSG_DONTROUTE 标志,则发送时目的地址必须指向一个本地接口地址, 而且信息包只发到该接口.
当 UDP 的总长超过接口 MTU(Maximum Transmission Unit 最大传输单元)时, UDP 会对信息包进行分段.
一个更为网络友好的可选方法是使用 path MTU discovery(路径MTU发现), 它描述于 ip(7) 中的
IP_PMTU_DISCOVER 部分.
ADDRESS FORMAT (地址格式)
UDP 使用 IPv4 的 sockaddr_in 地址格式,其描述于
ip(7) 中.
ERROR HANDLING (错误处理)
所有重大错误都会以错误返回值的方式传递给用户,
即使套接字没有连接亦如此.这种处理方式有别于许多其它的 BSD 套接字实现方法, 除非套接字连接上, 否则那些方法不会传递任何错误, Linux 的处理方式遵循
RFC1122 的要求.
为了与以前的代码兼容,可以设置 SO_BSDCOMPAT SOL_SOCKET 选项令只在套接字已连接的情况下接收远程错误(
EPROTO 和 EMSGSIZE) 除外. 最好是修复代码并适当地处理错误, 而不要打开该选项. 本地产生的错误总是传递.
当打开了 IP_RECVERR 选项时, 所有错误可以存储在套接字错误队列中, 并可以通过带 MSG_ERRQUEUE
标识设置的 recvmsg(2) 来接收.
ERRORS (错误)
所有列在 socket(7) 或 ip(7) 中的错误都可以在一个 UDP
套接字上收发时收到.
ECONNREFUSED 没有与目的地址相关联的接收者. 这可能由于在前面一个通过该套接字发送的信息包而引发.
udp - IPv4 上面的 UDP 协议.的更多相关文章
- http、tcp、udp、OAUTH2.0网络协议区别
一.先来一个讲TCP.UDP和HTTP关系的 1.TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RAR ...
- JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用
JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...
- TCP/IP协议网络编程以及UDP和TCP之传输协议
1.什么是TCP/IP协议? 网络编程协议有很多,目前应用最广泛的是TCP/IP协议(Transmission Control Protocal/Internet Protoal 传输控制协议/英特网 ...
- python笔记8 socket(TCP) subprocess模块 粘包现象 struct模块 基于UDP的套接字协议
socket 基于tcp协议socket 服务端 import socket phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 买 ...
- 三十天学不会TCP,UDP/IP网络编程 - UDP的实践--DHCP
在经历了一顿忙碌加出去玩了玩之后,我又开始重新更新了~这是最新的一篇~完整版可以去gitbook(https://www.gitbook.com/@rogerzhu/)看到,在gitbook的后台流量 ...
- VLC测试IPv4 IGMP/IPv6 MLD协议
1 简述 VLC既可以充当流客户端,又可以充当流服务器,并且可以跨平台使用,是一款开源.免费的软件,基于GNU GPL许可证. 2 搭建组播服务器 第一步:运行程序后选择“媒体 串流”:第二步:通过 ...
- Lua编写wireshark插件初探——解析Websocket上的MQTT协议
一.背景 最近在做物联网流量分析时发现, App在使用MQTT协议时往往通过SSL+WebSocket+MQTT这种方式与服务器通信,在使用SSL中间人截获数据后,Wireshark不能自动解析出MQ ...
- 牛客网Java刷题知识点之TCP、UDP、TCP和UDP的区别、socket、TCP编程的客户端一般步骤、TCP编程的服务器端一般步骤、UDP编程的客户端一般步骤、UDP编程的服务器端一般步骤
福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 Java全栈大联盟 ...
- k-develop 在ros上面的应用
sudo apt-get install kdevelop 根据wiki上面的ros 章节中,关于kdevelop的介绍,配置好环境即可. 导入工程时,选中src/src下面的章节,不过,需要注意去掉 ...
随机推荐
- mysql 5.7.20 从frm文件中得到建表语句 (使用 mysql-utilities)
系统环境 centos 7.2 mysql社区版 5.7.20 mysql-utilities 根据官网的说法,截止到2018年5月30日,实用工具的一些功能在Shell的路线图中,鼓励用户迁 ...
- spark性能调优04-算子调优
1.使用MapPartitions代替map 1.1 为什么要死使用MapPartitions代替map 普通的map,每条数据都会传入function中进行计算一次:而是用MapPartitions ...
- quick'n'dirty poc for CVE-2013-1763 SOCK_DIAG bug in kernel 3.3-3.8
/* * quick'n'dirty poc for CVE-2013-1763 SOCK_DIAG bug in kernel 3.3-3.8 * bug found by Spender * po ...
- python之字符串中插入变量
方法一:也是 比较好用的,功能教齐全 s="{name} is {sex}" print(s.format(name="zzy",sex="girl& ...
- strcoll - 用当前的区域选项来比较两个字符串
总览 (SYNOPSIS) #include <string.h> int strcoll(const char *s1, const char *s2); 描述 (DESCRIPTION ...
- 统计List中相同的元素
public static <E> List<E> getCommonsElements(List<E> list) { return list.stream() ...
- Linux主机通过windows虚拟机上网
现在有些公司喜欢把网络接入和安全管理揉在一起管理,放着标准的协议不用,偏偏要采用某些厂商自己搞的所谓的"一整套解决方案".这些所谓的解决方案又常常只顾着windows.对非软件行业 ...
- sqldeveloper全部导出
点击Tools--Export User Objects 这种方式可以导出当前用户拥有的所有对象,包括表.视图.触发器.同义词等等,对于表,只能导出表结构(建表语句),不能导出数据, 选中要导出的对象 ...
- 服务注册与发现---spring cloud
Eureka基本架构 Register Service :服务注册中心,它是一个 Eureka Server ,提供服务注册和发现的功能. Provider Service :服务提供者,它是 Eur ...
- 【JavaWeb项目】一个众筹网站的开发(五)后台用户登录功能
用户模块 1)注册 表单校验,使用校验插件 用户密码需要加密存储 注册成功后来到管理控制台,将用户放在session中,防止以后获取 以后用户经常获取用户id,使用mabatis主键自增策略,保存用户 ...