------------------------------互联网协议与协议族------------------------------
tcp/ip协议介绍:计算机网络协议,不同类型不同厂家之间的终端进行沟通,规范协议

互联网协议族:为tcp/ip协议族 大概有上百种协议,其中tcp协议、ip协议使用的比较

多所以大家默认成为tcp/ip


IP地址:网络地址(ip地址与子网掩码进行与运算获得)和主机地址
A类IP地址:由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”

(地址范围1.0.0.1-126.255.255.254)
B类IP地址:由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是

“10”(128.1.0.1-191.255.255.254)
C类IP地址:由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须

是“110”(范围192.0.1.1-223.255.255.254)

------------------------------socket介绍------------------------------
#定义:socket(简称 套接字) 是进程间通信的一种方式,它与其他进程间通信的一个主

要不同是:

#import socket:应用socket包
#socket.socket(Address Family,Type):创建一个套接字,返回socket的描述符
Address Family:可以选择 AF_INET(用于 Internet 进程间通信) 或者

AF_UNIX(用于同一台机器进程间通信),实际工作中常用AF_INET
Type:套接字类型,可以是 SOCKET_STREAM(流式套接字,主要用于 TCP 协议

)或者 SOCKET_DGRAM(数据报套接字,主要用于 UDP 协议)

------------------------------udp协议------------------------------
upd协议:快速传播数据,但不太安全。19世界70年代

#udpSocket = socket(AF_INET, SOCK_DGRAM):创建套接字

#sendData = raw_input("请输入要发送的数据:"):从键盘获取数据

#sendAddr = ('192.168.1.103', 8080):准备接收方的地址

#bindAddr = ('', 7788) # ip地址和端口号,ip一般不用写,表示本机的任何一个ip
#udpSocket.bind(bindAddr)# 绑定本地的相关信息,如果一个网络程序不绑定,则系统

会随机分配

#udpSocket.sendto(sendData, sendAddr):发送数据到指定的电脑上

#recvData=udpSocket.recvfrom(1024):接收数据,1024表示本次接收的最大字节数

#udpSocket.close():关闭套接字

------------------------------使用线程编写案例------------------------------

 #coding=utf-8
'''
用Python编写一个简单的socket程序,服务器想客户端发送一句话“Python is not hard”,客户端回送一句话“life is short,please use python”
''' #引用对应的包
# from socket import socket
import socket
import sys
import threading
from time import sleep #线程:模拟udp服务器向客户端发送一句话:Python is not hard
class ServerThread(threading.Thread):
#重写对应的构造方法
def __init__(self, port):
threading.Thread.__init__(self)
self.port = port #进行run方法的重写操作
def run(self):
#创建udp服务器套接字
self.serverSoc=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #元组,存储服务器端ip地址和端口号
self.locker = ('192.168.241.128',self.port) #绑定服务器ip和端口
self.serverSoc.bind(self.locker) #元组,存储要发送的指定客户端的ip地址和端口号,客户端指定端口号为8080
self.sendAddr = ('192.168.241.128',8080) print("服务器开启") sleep(1) #变量,存储要发送的内容
self.sendDate = 'Python is not hard' #进行数据向客户的发送
self.serverSoc.sendto(self.sendDate,self.sendAddr) #阻塞,接受客户端回发回来的数据信息
self.recvDate,self.recvAddr = self.serverSoc.recvfrom(1024) print("客户端:%s"%(self.recvDate)) #关闭套接字
self.serverSoc.close() #线程:模拟udp客户端接受服务器发送的数据,并且恢复一句“life is short,please use python”
class ClientThread(threading.Thread):
#重写对应的构造方法
def __init__(self,port):
threading.Thread.__init__(self)
self.port = port #重写对应的run方法
def run(self):
#创建udp客户端套接字
self.clientSoc = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #元组,存储客户端ip地址和端口号,指定客户端端口号为8080
self.locker = ('192.168.241.128',8080) self.sendAddr = ('192.168.241.128',self.port) #绑定
self.clientSoc.bind(self.locker) print("客户端开启") # # #阻塞,等待接受服务器发送过来的数据信息
# self.recvDate = self.clientSoc.recvfrom(1024)
# print(type(self.recvDate)) #属性测试
# #服务器发送过来的数据为:('Python is not hard', ('192.168.241.128', 8080))
# print("服务器发送过来的数据为:%s"%(str(self.recvDate))) #接受对应发送过来的数据信息
self.recvDate,self.recvAddr = self.clientSoc.recvfrom(1024) print("服务器发送过来的数据为:%s"%self.recvDate) #回发的数据信息
self.sendDate = '' if(self.recvDate == 'Python is not hard'):
#回发的数据信息
self.sendDate = "life is short,please use python" #数据向服务器回复
self.clientSoc.sendto(self.sendDate,self.sendAddr) #关闭套接字
self.clientSoc.close() #main函数
def main():
#变量接受udp服务器指定端口号
port=int(sys.argv[1]) #多线程创建udp服务器和udp客户端
serverThread=ServerThread(port)
clientThread=ClientThread(port) #开启线程
serverThread.start()
clientThread.start() #程序入口
if __name__ == '__main__':
main()

网络协议UDP的更多相关文章

  1. [网络协议]UDP实现的可靠协议

    UDP实现的可靠协议,基本都会对TCP的某一部分进行加强,另外一部分进行削弱.因为: “实时性+可靠性+公平性” 三者不能同时保证,因此可以牺牲TCP的局部公平性来换取更好的实时性,或者更浪费点带宽, ...

  2. 网络协议 7 - UDP 协议:性善碰到城会玩

        网络协议五步登天路,我们一路迈过了物理层.链路层,今天终于到了传输层.从这一层开始,很多知识应该都是服务端开发必备的知识了,今天我们就一起来梳理下.     其实,讲到 UDP,就少不了 TC ...

  3. 网络协议之UDP

    前言 TCP协议在不可靠的网络环境上提供了可靠的通信通道,隐藏了大量的底层细节,使应用程序更加简洁.但有些应用并不需要这么高的可靠性,并不需要按序交付,而且TCP为了提高可靠性也增加了延时,在某些对延 ...

  4. 网络协议HTTP TCP/UDP 浏览器缓存 Restful(十)

    一 TCP网络协议 1 建立TCP连接:三次握手原则 客户端通过向服务器端发送一个SYN来创建一个主动打开,作为三次握手的一部分.客户端把这段连接的序号设定为随机数 A. 服务器端应当为一个合法的SY ...

  5. 网络编程——UDP协议和通信

    第1章 UDP与TCP协议 在介绍TCP/IP结构时,提到传输层的两个重要的高级协议,分别是UDP和TCP,其中UDP是User Datagram Protocol的简称,称为用户数据报协议,TCP是 ...

  6. 网络协议 7 - UDP 协议

    网络协议五步登天路,我们一路迈过了物理层.链路层,今天终于到了传输层.从这一层开始,很多知识应该都是服务端开发必备的知识了,今天我们就一起来梳理下.     其实,讲到 UDP,就少不了 TCP.这俩 ...

  7. Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)

    Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器    定义:       ...

  8. 31.网络协议介绍tcp/udp

    网络协议 TCP:网络中传输数据的协议,打电话 解决了我可能在网络中找不到别人(数据无法传输到) 保证数据传输的稳定性,可靠性 保证数据的安全性,完整性 对方要有响应 尝试重新发送 UDP:传输数据的 ...

  9. 网络协议: TCP/IP 和UDP/IP

    网络协议: TCP/IP 和UDP/IP TCP/IP TCP/IP(Transmission Control Protocol/Internet Protocol)是一种可靠的网络数据传输控制协议. ...

随机推荐

  1. jQuery请求后台接口

    function test() { console.log("请求准备发送"); $.ajax({ type : "POST", url : "/ap ...

  2. css 过渡和 变形

    一.过渡(transition) transition-property: 指定具有过渡效果的CSS样式属性名 1.默认值: all 2.仅具有中间值(CSS样式值是数值的)的CSS样式具有过渡效果 ...

  3. HDU1049

    Problem Description An inch worm is at the bottom of a well n inches deep. It has enough energy to c ...

  4. js常用内置对象及方法

    在js中万物皆对象:字符串,数组,数值,函数...... 内置对象都有自己的属性和方法,访问方法如下: 对象名.属性名称: 对象名.方法名称 1.Array数组对象 unshift( )    数组开 ...

  5. Unity3D 中材质球(Material)预制体打包成AB(AssetBundle)出现材质丢失问题的解决方案

    关于Unity3D中打AB(AssetBundle)资源包,默认是不连Shader一同打包进去的,所以得自行添加,添加方式比较简单,不需要往项目中添加Shader,只是点选一下就可以了,具体实现方式如 ...

  6. python-希尔排序

    希尔排序 希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名. 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本.希尔排序是非稳定排序算法 ...

  7. HDU 6043 KazaQ's Socks (规律)

    Description KazaQ wears socks everyday. At the beginning, he has nn pairs of socks numbered from 11  ...

  8. git分支管理之Bug分支

    软件开发中,bug就像家常便饭一样.有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除. 当你接到一个修复一 ...

  9. TASKCTL产品功能清单-转载

    功能分类 功能描述 一级 二级 关系 调度控制 作业依赖关系调度 作业依赖关系调度是调度最基本的功能,指作业间具有顺序的运行,比如:a.b.c三个作业,只有当a完成后才运行b,b完成才能运行c 作业并 ...

  10. NYOJ 23.取石子(一)

    取石子(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 一天,TT在寝室闲着无聊,和同寝的人玩起了取石子游戏,而由于条件有限,他/她们是用旺仔小馒头当作石子.游 ...