基于socket的udp传输,socketserver模块,进程

基于UDP的套接字编程

udp是无链接的,先启动哪一端都不会报错并发

socket.SOCK_DGRAM 数据报协议socket

udp不会发送空数据,什么都不输入直接发送也会有报头发过去tcp

服务端spa

import socket

server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
server.bind(('127.0.0.1',8080))

while True:
    data,client_addr = server.recvfrom(1024)
    print(data)
    server.sendto(data.upper(),client_addr)

客户端
import socket

client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

while True:
    msg = input('>>:')
    client.sendto(msg.encode('utf-8'),('127.0.0.1',8080))
    data,server_addr = client.recvfrom(1024)
    print(data)
socketserver模块

使用socketserver类实现基于tcp的并发编程操作系统

import socketserver

class MyHandler(socketserver.BaseRequestHandler):
    def handle(self):
        # 通讯循环
        while True:
            try:
                data = self.request.recv(1024)
                if len(data) == 0: break
                self.request.send(data.upper())
            except ConnectionRefusedError:
                break
        self.request.close()


if __name__ == '__main__':
    s = socketserver.ThreadingTCPServer(('127.0.0.1', 8080), MyHandler, bind_and_activate=True)
    s.serve_forever() # 表明链接循环
    # 循环创建链接,每创建一个链接就会启动一个线程(服务员),专门与刚刚创建好的链接作通讯循环

使用socketserver类实现基于udp的并发编程线程

import socketserver


class MyHandler(socketserver.BaseRequestHandler):
    def handle(self):
        # 通讯循环
        print(self.__dict__)
        print(self.client_address)
        print(self.request)

        data = self.request[0]
        print('客户消息', data)
        self.request[1].sendto(data.upper(), self.client_address)


if __name__ == '__main__':
    s = socketserver.ThreadingUDPServer(('127.0.0.1', 8081), MyHandler)
    s.serve_forever()

进程code

1.什么是进程?server

         进程指的是一个正在运行的程序,或者说是程序的运行过程,即进程是一个抽象的概念blog

         进程是起源于操做系统的,是操做系统最核心的概念,操做系统全部其余的概念都是围绕进程展开的

 

2.为什么要进程?

         并发

 

3.如何用进程?

         开启进程的两种方式

 

操做系统原理

1.串行:一个任务完完整整地运行完毕后,才能运行下一个任务

2.并发:看起来多个任务是同时运行的便可,单核也能够实现并发

3.并行:真正意义上多个任务同时运行,只有多核才能实现并行

4.cpu的功能:cpu是用来作计算的,cpu是没法执行IO操做的,一旦遇到io操做,应该去执行别的任务

5.多道技术:

         ①空间上的复用==》多个进程共用一个内存条

         ②时间上的复用==》多个进程复用同一个cpu的时间

                  cpu遇到IO切换:能够提高效率

                  一个进程占用cpu时间过长也会切走:为了实现并发效果不得已而为之,反而会下降程序的执行效率

相关文章
相关标签/搜索