套接字
一、网络中如何进行通信?
首要解决的问题是如何标识一个进程,否则通信无从谈起。
其实TCP、IP协议族已经帮我们解决了这个问题,网络层的IP地址可以唯一标识网络中的主机,传输层的“协议+端口”可以唯一标识主机中的应用程序(进行)。
二、套接字
socket(简称套接字)是进程间通信的一种方式。它与其他进程间通信的一个主要不同是,它能实现不同主机间的进程通信,我们网络上各种各样的服务大多是基于socket来完成通信的。例如我们每天浏览网页、qq聊天、收发email等等。
socket方法有两个参数:
① address family:可以选择
AF_INET
(用于internet进程间通信)或者
AF_UNIX
(用于同一台机器进程间通信),实际工作中常用AF_INET;② Type:套接字类型,可以是
SOCK_STREAM
(流式套接字,主要用于TCP协议)或者
SOCK_DGRAM
(数据包套接字,主要用于UDP协议)
创建套接字:
UDP协议
一、UDP协议介绍
UDP----用户数据报协议,是一个无连接的简单地面向数据报的传输层协议。无连接指的是单方面的,就好比寄信和打电话,寄出去的信件可能在中途丢失,但是打电话不会,建立了连接就可以通话,没建立连接无法传输信息。
UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证他们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个链接,且没有超时重发等机制,故而传输速度很快。
UDP是一种面向无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能保证的。
特点(了解):UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。UDP传输数据时有大小限制,每个被传输的数据报必须限定在64KB之内。UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方。
适用情况:
UDP是面向消息的协议,通信时不需要建立连接,数据的传输自然是不可靠的,UDP一般用于多点通信和实时的数据业务,比如:
语音广播
视频
TFTP(简单文件传送)
SNMP(简单网络管理协议)
RIP(路由信息协议,如报告股票市场,航空信息)
DNS(域名解析)
注重速度流畅udp操作简单,而且仅需要较少的监护,因此通常用于局域网高可靠性的分散系统中clientserver应用程序。例如视频会议系统,并不要求音频视频数据绝对的正确,只要保证连贯性就可以了,这种情况下显然使用UDP会更合理一些。
二、网络调试助手
接下来我们需要借助网络测试小助手来完成套接字的创建使用过程:
三、示例
udp网络程序-发送数据:①创建套接字;②发送、接收数据;③关闭套接字。
我们点击运行程序之后,先不要输入信息,打开网络调试助手,进行连接。
输入你好!我们就可以在网络测试助手上收到消息。
这次在网络测试助手上发送消息:你是GG还是MM?
这是两次print不同的表达结果。
其实,使用from socket import *会在创建套接字的时候使代码显得更加简洁凝练,因为它导入了所有功能。
四、UDP网络通信过程
和快递原理是差不多的。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !