网络编程 UDP套接字
第十二章 UDP套接字
12.1 前言
上一章讲述了TCP通信方式,它是基于流的面向连接的网络通信。UDP是IP协议上的另一种传输协议。
TCP和UDP都是端到端的通信协议,都处于TCP/IP网络模型的第三层(传输层)。
它和TCP的区别是:
TCP | UDP | 解释 |
---|---|---|
基于流 | 基于报文 | |
有连接 | 无连接 | |
有保障 | 无保障 | |
效率低 | 效率高 | |
适用稳定传输场合 | 适合允许报文丢失的场合 |
12.2 创建UDP socket
12.2 绑定地址
绑定地址和TCP一样
12.3 发送和接收
调用的接口和TCP不一样,行为不同。TCP的发送会发生粘包情况,而UDP不会。TCP发送认为是可靠的,而UDP的发送可能会发生丢失和乱序。
UDP的发送大部分时候使用sendto,因为send函数没有提供目标地址。如果UDP socket调用了connect函数,也可以使用send函数。
12.4 广播和多播(组播)
由于UDP没有连接,所以可以支持广播和多播。
12.5 关闭socket
使用close
注意:
UDP也可以调用connect函数,但是connect函数只是让udp socket保存默认的发送地址,以便可以简单的调用send函数来发送数据。
UDP的数据是基于报文的,客户端调用一次send,产生一个UDP报文,接收一次只能接收一个报文。
如果recv时,程序提供的缓冲区小于UDP报文长度,那么会导致数据丢失。如何得到数据报文的长度???UDP报文不要超过MTU(1400)
广播时,发送端做额外设置,允许发送广播,接收端还是默认处理接口。允许发送广播socket,也可以接收数据。
组播,发送端不需要额外设置,只需要发送地址改成组播地址即可。接收端加入组。
转载于:https://www.cnblogs.com/w-x-me/p/6412735.html
网络编程 UDP套接字相关推荐
- [python学习] 专题七.网络编程之套接字Socket、TCP和UDP通信实例
很早以前研究过C#和C++的网络通信,参考我的文章: C#网络编程之Tcp实现客户端和服务器聊天 C#网络编程之套接字编程基础知识 ...
- Linux原始网络编程,Linux操作系统网络编程 原始套接字 (1)
Linux操作系统网络编程--原始套接字 (1) http://soft.zdnet.com.cn/software_zone/2007/1020/568223.shtml 我们在前面已经学习过了网络 ...
- Linux网络编程——原始套接字编程
Linux网络编程--原始套接字编程 转自:http://blog.csdn.net/tennysonsky/article/details/44676377 原始套接字编程和之前的 UDP 编程差不 ...
- python socket清空接收缓冲区_Python网络编程——修改套接字发送和接收的缓冲区大小...
很多情况下,默认的套接字缓冲区大小可能不够用.此时,可以将默认的套接字缓冲区大小改成一个更合适的值. 1. 代码 # ! /usr/bin/env python # -*- coding: utf-8 ...
- TCP/IP网络编程:P1->理解网络编程和套接字
本系列文章为<TCP/IP网络编程----尹圣雨>学习笔记 文章目录 一.理解网络编程和套接字 1.1 构建接电话套接字 1.2 编写"Hello world!"服务器 ...
- C# 网络编程之套接字编程基础知识
最近阅读了周存杰编写的<C#网络编程实例教程>并阅读了很多相关方面的资料,同时自己也做了一些套接字编程方面的C#程序,所以根据它的知识总结了最近的套接字编程的一些知识点,方便自己的理解与他 ...
- Linux网络编程之套接字基础
Linux网络编程之套接字基础 1.套接字的基本结构 struct sockaddr 这个结构用来存储套接字地址. 数据定义: struct sockaddr { unsigned short sa_ ...
- 01.理解网络编程和套接字
理解网络编程和套接字 理解网络编程和套接字 网络编程和套接字概要 网络编程就是编写程序使两台连网的计算机相互交换数据.这就是全部内容了吗?是的!网络编程要比想象中简单许多. 那么,这两台计算机之间用什 ...
- TCP/IP网络编程——理解网络编程和套接字编程
完整版文章请参考: TCP/IP网络编程完整版文章 文章目录 一.理解网络编程和套接字编程 1.1 socket套接字 1.1.1 一个例子来表示TCP的网络连接 1.1.2 程序实现 1.2 文件操 ...
最新文章
- Python使用matplotlib可视化小提琴图、seaborn中的violinplot函数可视化多分类变量的小提琴图(Violin Plot)
- php服务器无法上传图片,IIS+php服务器无法上传图片解决办法_PHP教程
- 办公自动化系统开发实例导航 源码_本色世界源码搭建(系统开发)
- 帝国cms php点击删除,帝国CMS删除内容非本站链接的方法(非插件)
- mysql strcmp s1 s2_mysql常用函数
- instanceof_您真的需要instanceof吗?
- 最长不下降子序列 (O(nlogn)算法)
- SuseLinux详解(3)——开启/关闭防火墙的方法
- C# 启动EXE 关闭EXE ProcessStartInfo
- 联想服务器没有安装iis组件,win10没有iis怎么安装_手把手教你安装iis的详细步骤...
- 侯晓迪:全身心的投入,吃住都在实验室
- 中国好SaaS广州站:Fundebug勇夺两大奖项
- Sql取得两表关联数据
- python将pvr格式转换成pvr.ccz的代码
- jetson nano 基础设置
- Tableau的用法
- 【最新最详细】SQL Server 2019 安装教程{超详细 附网盘下载链接}
- java统计图表代码_java swing下用jfreechart开发图表统计情况
- css与mdx,mdx、mdd及css三者关系以及欧路中应如何安装css
- C++中fstream