socket之 udp用法 dns 多道 进程

1.udp协议

  定义:udp是用户数据报协议,是osi参考模型中一种无连接的传输层协议,提供简单不可靠信息传送服务
  用途:用于不要求可靠性,不要求分组顺序,每一次传输少量数据的传输,力求快

2.udp通讯流程

  它与对讲机非常类似:只管发送不管对方是否接收到  甚至不关心对方在不在。

          买传呼机              

          固定对讲频道

          (省了listen与accept)

          收信号

          发信号

          买对讲及

          (省了connect)

          指定发送频率

          发信息

          收信息

  它与tcp的区别:由于udp是不可靠传输,不需要建立连接,不会粘包,单次数据包不能太大  

  注:udp的socket得 手动指定

#================================================================= 客户端
from socket import  *

client = socket(AF_INET,SOCK_DGRAM)
client.sendto("%Y-%m-%d".encode("utf-8"),("127.0.0.1",1688))
data,addr = client.recvfrom(1472)
print(data)
# =================================================================服务器
from socket import  *
import time

server = socket(AF_INET,SOCK_DGRAM)
server.bind(("127.0.0.1",1688))

while True:
data,addr = server.recvfrom(1472)
res = time.strftime(data.decode("utf-8"),time.localtime())
server.sendto(res.encode("utf-8"),addr
 
#模拟聊天
===================================================================服务器 from socket import * server = socket(AF_INET,SOCK_DGRAM) server.bind(("192.168.13.93",1688)) clients = {} while True: try: data,addr = server.recvfrom(1472) if addr[0] not in clients: clients[addr[0]] = addr try: print("%s说:%s" % (addr[0],data.decode("utf-8"))) except: print("编码有问题啊 .....") # 遍历所有客户端 转发消息给他们 for k,v in clients.items(): server.sendto(data,v) except Exception as e: # print(e) pass
#=================================================================客户端1
from
socket import * client = socket(AF_INET,SOCK_DGRAM) while True: # msg = input("msg:").strip() client.sendto("client2".encode("utf-8"),("127.0.0.1",1688)) data,addr = client.recvfrom(1472) print(data)
#=================================================================客户端2
from
socket import * client = socket(AF_INET,SOCK_DGRAM) while True: # msg = input("msg:").strip() client.sendto("client1".encode("utf-8"),("192.168.13.93",1688)) data,addr = client.recvfrom(1472) print(data)

4.DNS服务器:

  定义:是域名解析服务器,是cs结构中的server端,   本质是数据库,存储的是ip与域名的对应关系

  用途:将域名转换为ip地址                要链接服务器,必须的知道ip

  由来:由于单独的ip不方便记忆,所以我们把ip和域名绑定到一块

  dns使用的是Udp协议, 因为传输的数据小,  但对速度要求高  一个dns服务器要服务很多计算机

5.多进程的概念

  进程:指的是正在运行的程序,它来自于操作系统        没有操作系统就没有进程

  操作系统:是一套软件,用于控制硬件,隐藏丑陋的硬件细节,然后将无序的硬件竞争变得有序

      操作系统与普通软件的区别是操作系统受硬件保护,不能被用户修改,他是一个大型,长寿的程序:而普通软件你不用了可以自己写一个或换一个

  多道技术:为了提高计算机的利用率,有了它可以同一时间处理多个任务

  空间复用:把内存分割为不同区域,每个区域装入不同的程序

  时间复用:当一个程序执行io操作时,可以切换另一个程序来执行,但是得保存切换前的状态 ,以便恢复执行。 一个进程占用cpu时间过长也会切换,或者说被操作系统夺走cpu的执行权限

  注:并不是多道就一定提高了效率,eg如果多个任务都是纯计算,那么切换反而会降低效率只有遇到io操作时才能提高效率

 

 

原文地址:https://www.cnblogs.com/wyf20190411-/p/10951628.html