今天学了一点UDP知识,还是IP协议.都不是重点,重点是socket服务器框架

不过还是把今天学的东西,先罗列出来,将来复习的时候方便

UDP报文可能会丢失、重复

UDP报文可能会乱序

UDP缺乏流量控制

udp缓冲区写满以后,没有流量控制机制,会覆盖缓冲区。

UDP协议数据报文截断

如果接收到的数据报,大于缓冲区;报文可以被截断;后面的部分会丢失。

recvfrom返回0,不代表连接关闭,因为udp是无连接的。

sendto可以发送数据0包。。。只含有udp头部。

ICMP异步错误

观察现象:关闭udp服务端,若启动udp客户端,从键盘接受数据后,再发送数据。udp客户端阻塞在sendto位置;

//说明1:udp发送报文的时,只把数据copy到发送缓冲区。在服务器没有起来的情况下,可以发送成功。

说明2:所谓ICMP异步错误是指:发送的报文的时候,没有错误,接受报文recvfrom的时候,回收到ICMP应答

说明3:异步的错误,是无法返回未连接的套接字。udp也可以调用connect

UDP connect

说明1://udp调用connet,并没有三次握手,只是维护了一个状态信息(和对等方的)。。。

说明2)//一但调用connect,就可以使用send函数

结论:客户端调用connet和不调connet的区别。

1)  udp也可以调用connet

2)udp客户端调用了connect以后,不会阻塞在recvfrom函数这里。

3)一但调用connect,就可以使用send函数

4)  UDP协议数据报文截断

如果接收到的数据报,大于缓冲区;报文可以被截断;后面的部分会丢失。

实验1

//数据报方式。。。。不是字节流

//如果接受数据时,指定的缓冲区的大小,较小;

//剩余部分将要截断,扔掉

实验2

sendto可以发送0包,只含头部。

UDP注意点

UDP报文可能会丢失、重复

UDP报文可能会乱序

UDP缺乏流量控制

udp缓冲区写满以后,没有流量控制机制,会覆盖缓冲区。

UDP协议数据报文截断

如果接收到的数据报,大于缓冲区;报文可以被截断;后面的部分会丢失。

recvfrom返回0,不代表连接关闭,因为udp是无连接的。

sendto可以发送数据0包。。。只含有udp头部。

ICMP异步错误

观察现象:关闭udp服务端,若启动udp客户端,从键盘接受数据后,再发送数据。udp客户端阻塞在sendto位置;

//说明1:udp发送报文的时,只把数据copy到发送缓冲区。在服务器没有起来的情况下,可以发送成功。

说明2:所谓ICMP异步错误是指:发送的报文的时候,没有错误,接受报文recvfrom的时候,回收到ICMP应答

说明3:异步的错误,是无法返回未连接的套接字。udp也可以调用connect

UDP connect

说明1://udp调用connet,并没有三次握手,只是维护了一个状态信息(和对等方的)。。。

说明2)//一但调用connect,就可以使用send函数

linux第9天 UDP的更多相关文章

  1. Linux学习四:UDP编程(上)

    关于UDP和TCP对比优缺,这里就不说了. 使用UDP代码所掉用的函数和用于TCP的函数非常类似,这主要因为套接口库在底层的TCP和UDP的函数上加了一层抽象,通过这层抽象使得编程更容易,但失去了一些 ...

  2. [转][linux]简单的linux下的tcp/udp

    转自:https://blog.csdn.net/cabing2005/article/details/53068880 详细函数以及参数解释请看原链接. windows下的tcp/udp参考:htt ...

  3. Linux网络编程:UDP实现可靠的文件传输

    我们知道,用TCP实现文件传输很简单.相对于TCP,因为UDP是面向无连接.不可靠的传输协议,所以我们需要考虑丢包和后发先至(包的顺序)的问题,所以我们想要实现UDP传输文件,则需要解决这两个问题.方 ...

  4. Linux网络编程:UDP Socket编程范例

    TCP协议提供的是一种可靠的,复杂的,面向连接的数据流(SOCK_STREAM)传输服务,它通过三段式握手过程建立连接.TCP有一种"重传确认"机制,即接收端收到数据后要发出一个肯 ...

  5. Linux C socket 基于 UDP

    /*************************************************************************     > File Name: serve ...

  6. linux网络编程笔记——UDP

    目前这部分代码会出现阻塞问题,暂时尚未解决 #include "udp.h" #include <stdio.h> #include <string.h> ...

  7. linux下socket编程-UDP

    下面是UDP的服务器的代码: /* server.c */ #include <stdio.h> #include <string.h> #include <netine ...

  8. Linux 网络编程(UDP)

    客户端代码 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<sys/sock ...

  9. Linux 简单socket实现UDP通信

    服务器端 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sy ...

随机推荐

  1. BulletedList使用及详解

    BulletedList是一个让你轻松在页面上显示项目符号和编号格式(Bulledted List)的控件.对于ASP.NET 1.x里要动态显示Bulledted List时,要么自己利用HTML的 ...

  2. IE中的fireEvent和webkit中的dispatchEvent

    拿浏览器的click事件来说: 在IE浏览器中如果一个element没有注册click事件,那么直接调用的话会出现异常!当然如果你注册了没有什么可说的. 那么如果使用fireEvent来处理,clic ...

  3. Ubuntu+Redis主从配置

    软件环境: OS:ubuntu-12.04-desktop-amd64 Redis:redis-2.8.13.tar.gz TCL:tcl8.6.2-src.tar.gz VMware:vmware ...

  4. Almost Sorted Array---hdu5532(简单dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5532 题意:问一个含有n个数的序列,删除一个数后是否有序(递增或递减都可以) 我们只要求一下最长上升子 ...

  5. [RVM is not a function] Interating RVM with gnome-terminal

    Ubuntu 12.04 64bit LTS, running the 'rvm use 1.9.3' brings the 'RVM is not a function' warning. Here ...

  6. 好网站:字体转换器在线转换 http://www.diyiziti.com/

    偶然间发现这个网站,它可以将文字设置字体并做成图片,也有很多好的字体下载如瘦金体. 下载下来的ttf文件在win7里可以右键点击install,在vista和xp里可以直接拷贝到window\font ...

  7. ChatForFun 公众号使用说明

    使用方法 2016-07-16 DennisMi ChatForFun 1,发送  #1 实现登陆,或者退出登陆 2,发送  #2 实现加入聊天,和退出聊天 3,聊天开始后,可以直接发送消息 4,如果 ...

  8. linux mknod命令解析

    linux mknod命令解析 http://www.cnblogs.com/cobbliu/archive/2011/07/05/2389014.html mknod:make node  生成设备 ...

  9. 分享一个使用APICloud云数据库已上线的商城APP

    本项目盈利模式依赖taobao模块实现淘宝闭环交易,发布销售淘宝联盟产品获取返佣.目前已在应用宝上线安卓版本,先上图. 源码在此: http://community.apicloud.com/bbs/ ...

  10. Windows 下用 gogs 配置局域网 git server

    大道曙光 Windows 下用 gogs 配置局域网 git server 最近要用 C# 开发一个新的项目,所以需要在 Windows 局域网环境下构建一个 git server. 在 Window ...