Python网络编程之socketserver实现多并发

利用socketserver实现多并发,socketserver内部会调用socket模块进行功能上的实现



client.py客户端脚本文件内容

  1. #!/usr/bin/env python
  2. # _*_ coding:utf-8 _*_
  3. import socket
  4. # 创建一个socket对象
  5. obj = socket.socket()
  6. # 制定服务端的IP地址和端口
  7. obj.connect((‘127.0.0.1‘, 999, ))
  8. # 阻塞,等待服务端发送内容,接受服务端发送过来的内容,最大接受1024字节
  9. ret_bytes = obj.recv(1024)
  10. # 因为服务端发送过来的是字节,所以我们需要把字节转换为字符串进行输出
  11. ret_str = str(ret_bytes, encoding="utf-8")
  12. # 输出内容
  13. print(ret_str)
  14. while True:
  15.    # 当进入连接的时候,提示让用户输入内容
  16.    inp = input("Client请输入要发送的内容>>> ")
  17.    # 如果输出q则退出
  18.    if inp == "q":
  19.        # 把q发送给服务端
  20.        obj.sendall(bytes(inp, encoding="utf-8"))
  21.        # 退出当前while
  22.        break
  23.    else:
  24.        # 否则就把用户输入的内容发送给用户
  25.        obj.sendall(bytes(inp, encoding="utf-8"))
  26.        # 等待服务端回答
  27.        print("正在等待Server输入内容......")
  28.        # 获取服务端发送过来的结果
  29.        ret = str(obj.recv(1024), encoding="utf-8")
  30.        # 输出结果
  31.        print(ret)
  32. # 连接完成之后关闭链接
  33. obj.close()

server.py服务端脚本文件内容

  1. #!/usr/bin/env python
  2. # _*_ coding:utf-8 _*_
  3. import socketserver
  4. class MyServer(socketserver.BaseRequestHandler):
  5.    def handle(self):
  6.        conn = self.request
  7.        conn.sendall(bytes("你好,欢迎登陆!", encoding="utf-8"))
  8.        while True:
  9.            # 输出等待客户端发送内容
  10.            print("正在等待Client输入内容......")
  11.            # 接收客户端发送过来的内容
  12.            ret_bytes = conn.recv(1024)
  13.            # 转换成字符串类型
  14.            ret_str = str(ret_bytes, encoding="utf-8")
  15.            # 输出用户发送过来的内容
  16.            print(ret_str)
  17.            # 如果用户输入的是q
  18.            if ret_str == "q":
  19.                # 则退出循环,等待下个用户输入
  20.                break
  21.            # 给客户端发送内容
  22.            inp = input("Service请输入要发送的内容>>> ")
  23.            conn.sendall(bytes(inp, encoding="utf-8"))
  24. if __name__ == "__main__":
  25.    server = socketserver.ThreadingTCPServer((‘127.0.0.1‘, 999, ), MyServer)
  26.    server.serve_forever()

效果图

同时打开多个客户端,服务端也不会出现错误

时间: 2024-12-16 04:37:14

Python网络编程之socketserver实现多并发的相关文章

Python网络编程之socket应用

1 引言 2 网络基础 3 socket介绍 4 socket基本使用 5 总结 1 引言 本篇主要对Python下网络编程中用到的socket模块进行初步总结.首先从网络基础理论出发,介绍了TCP协议和UDP协议:然后总结了socket中的常用函数:最后通过实际代码展示基本函数的应用. 2 网络基础 要想理解socket,首先得熟悉一下TCP/IP协议族.TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,定义

Python网络编程之socket

socket是网络连接端点.例如当你的Web浏览器请求ansheng.me的网站时,你的Web浏览器创建一个socket并命令它去连接ansheng.me的Web服务器主机,Web服务器也对过来的请求在一个socket上进行监听.两端使用各自的socket来发送和接收信息. 在使用的时候,每个socket都被绑定到一个特定的IP地址和端口.IP地址是一个由4个数组成的序列,这4个数均是范围0~255中的值:端口数值的取值范围是0~65535.端口数小于1024的都是为众所周知的网络服务所保留的:

网络编程之socketserver初识

Server #!/usr/bin/env python # @Author : "Wjl" # @Date : 2017/12/22 # @Time : 11:07 # @SoftWare : PyCharm # @File : Server端并发聊天_Server.py import socketserver """ socketserver模块是python为我们写好的一个封装了网络操作相关的模块 比我们自己手写socket方便 "&quo

python网络编程之socket编程

一 客户端/服务器架构 即C/S架构,包括 1.硬件C/S架构(打印机) 2.软件C/S架构(web服务) 美好的愿望: 最常用的软件服务器是 Web 服务器.一台机器里放一些网页或 Web 应用程序,然后启动 服务.这样的服务器的任务就是接受客户的请求,把网页发给客户(如用户计算机上的浏览器),然 后等待下一个客户请求.这些服务启动后的目标就是"永远运行下去".虽然它们不可能实现这样的 目标,但只要没有关机或硬件出错等外力干扰,它们就能运行非常长的一段时间. 生活中的C/S架构: 商

网络编程之socketserver

""" socketserver.py 中的5个基础类 +------------+ | BaseServer | +------------+ | v +-----------+ +------------------+ | TCPServer |------->| UnixStreamServer | +-----------+ +------------------+ | v +-----------+ +--------------------+ | UDPSe

python网络编程之UDP实现

一.简介: python udp是无连接,没有TCP的三次握手,错误重传机制,发的只管发,收的只管收,效率比TCP高,运用于对数据帧不高的地方,如视频,音频的传输 二.实现过程: 服务器端过程如下: 1.建立UDP的SOCKET 2.绑定一个接口,让客户端连接 3.接受数据 客户端过程如下: 1.创建一个socket 2.收发数据报 三.代码实现 1.服务器端: import socket from time import ctime def udpServer(): buffer=2048 a

python网络编程之C/S架构介绍

标签(空格分隔): c/s架构介绍 什么是C/S架构 C指的是client(客户端软件),S指的是Server(服务端软件),后续我们可以试着写个c/s软件实现服务器软件与客户端软件基于网络通信: 计算机基础知识 基础知识: 作为应用开发程序员,我们开发的软件都是应用软件,而应用软件必须运行于操作系统之上,操作系统则运行于硬件之上,应用软件是无法直接操作硬件的,应用软件对硬件的操作必须调用操作系统的接口,由操作系统操控硬件. 比如客户端软件想要基于网络发送一条消息给服务端软件,流程是: 1.客户

python网络编程之TCP编程

TCP编程 模拟客户端和服务器端进行通信.其中要素为ip地址和端口. 客户端: 建立socket对象,并且设置为TCP模式 用connect()方法设置端口和ip地址,需要传入一个set. 可以进行接受和发送的操作 关闭socket连接 服务器端: 因为一个服务器打开一个固定端口进行监听,但是可能响应不同的客户端,所以可以定义不同的进程序进行处理. 建立socket对象 绑定IP地址和端口 监听 利用进程响应不同的客户端请求,可以发送和接受数据等操作 关闭socket连接 实例: 客户端: im

Python—网络编程之tcp编程

服务端代码 import socket # 1.创建流式套接字实例 # server = socket.socket() server = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0) # 2.服务端监听绑定的ip和port(参数是元组) server.bind(("127.0.0.1", 8832)) # 3.设置监听套接字,创建监听队列 server.setsockopt(socket.SOL_SOCKET, socket