栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

UDP套接字编程

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

UDP套接字编程

UDP Socket编程

UDP:在客户端和服务器之间没有连接

  • 没有握手【建立起socket之后,UDP Socket只是和本地的IP和端口相捆绑,不跟对方的IP和端口相捆绑】
  • 发送端在每一个报文中明确地址指定目标的IP地址和端口号【不然就不知道发给谁,因为没有握手】【发的时候要指明发送端的端节点,还要指明发送的东西,另外一方面还要指明发送给谁】
  • 服务器必须从收到的分组中提取出发送端的IP地址和端口号【任何一个守候在UDP端口之上的UDP进程,在收报文的时候要收对方发过来的是什么、对方的端节点,知道谁发给我的,转化完了之后我才知道要发给谁】【收的时候除了指明我从哪个socket去收,收的是什么,还要获取一个引用型的参数,知道谁发给我的】

UDP:传送的数据可能乱序,也可能丢失

进程视角看UDP服务——UDP为客户端和服务器提供不可靠的字节组的传送服务

【UDP是无连接的,所以提供的服务也叫数据报,IP也叫数据报(datagram),无连接的PDU通常可以把它叫数据报,所以看到datagram要结合上下文来看他是UDP的协议数据单元还是IP的协议数据单元】

Client/server socket 交互:UDP

【第一步(服务器端)建立一个serverSocket,返回一个整数】

【第二步(服务器端)bind,把返回的serverSocket的值和本地的sad(IP地址和端口号)相捆绑】

【第三步(服务器端)recvfrom,read from serverSocket,仍然是serverSocket,等待客户端向我发送什么东西。从serverSocket去读,读的东西放到Sen,谁发给我的(对方的IP地址和端口)作为一个引用型参数,相当于是一个返回值返回给服务端。如果对方发送东西,这个函数就会解除阻塞,如果没有就一直阻塞着】

【第四步,客户端clientSocket,在参数中指明是UDP socket】

【第五步,(客户端)有一个本地的bind(隐式的),把clientSocket和本地的端口值相捆绑】

【第六步,(客户端)sendto,在sendto当中指明要使用的端口、clientSocket值,要发的是什么】

【sendto发出去之后recvfrom解除阻塞,然后recvfrom返回一个有效值,在Sen放传过来的是什么,之后对他进行一个大小写转换】

【第七步,(服务端)sendto,serverSocket作为参数,谁发送给我的我发送给谁(&

cad)】

【第八步,(客户端)read,借助于clientSocket,就会得到来自服务器端已经转换完之后的大写字符串,再把它显示出来,再关掉,然后客户端再关闭socket】

【在UDP之上不需要握手,建立去socket值之后就发了,在服务器上没有welcomeSocket和connectionSocket之分,只有一个socket,代表的是本地的IP和相应的端口】

样例:C客户端(UDP)

样例:C服务器(UDP)

 参考资料:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程 P21

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/964956.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号