SocketServer实现网络服务器,socket实现客户端
时间:2019-10-15
本文章向大家介绍SocketServer实现网络服务器,socket实现客户端,主要包括SocketServer实现网络服务器,socket实现客户端使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
python使用SocketServer实现网络服务器
SocketServer模块简化了网络服务器的编写。在进行socket创建时,使用SocketServer会减少创建步骤,而且它内部提供了4个类:TCPServer,UDPServer,UnixStreamServer,UnixDatagramServer这4个类是同步进行处理的; 另外提供ForkingMixIn和ThreadingMixIn这两个类来支持异步。
案例
Python3.6服务器端代码为
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
#coding:utf-8 import socketserver from time import ctime print ( "=====================SocketServer TCP服务器=====================" ); HOST = '' PORT = 8888 #端口号 ADDR = (HOST, PORT) class MyRequestHandler(socketserver.StreamRequestHandler): #StreamRequestHandler实现TCP/UDP服务器的服务处理器 def handle( self ): #重写handle方法 print ( '连接到:' , self .client_address) data = self .rfile.readline().strip() print (data) self .wfile.write(( '[%s] %s' % (ctime(), data.decode( 'utf-8' )).encode( 'utf-8' )) tcpServer = socketserver.TCPServer(ADDR, MyRequestHandler) print ( '等待连接...' ) tcpServer .serve_forever() |
客户端代码为
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#coding:utf-8 from socket import * print ( "=====================SocketServer TCP客户端=====================" ); HOST = '127.0.0.1' PORT = 8888 BUFSIZ = 1024 ADDR = (HOST, PORT) while True : tcpCli = socket(AF_INET, SOCK_STREAM) #创建客户端套接字 tcpCli.connect(ADDR) #发起TCP连接 data = input ( '> ' ) #接收用户输入信息 if not data: #如果用户输入的内容是否为空 break tcpCli.send(data.encode( 'utf-8' )) #客户端发送消息,必须发送字节数组 buffer = tcpCli.recv(BUFSIZ) #接收回应消息,接收到的是字节数组 if not buffer : #如果接收服务器信息失败,或响应消息为空 break print ( buffer .decode( 'utf-8' )) #打印回应消息 tcpCli.close() #关闭客户端socket |
更多技术资讯可关注:gzitcast
原文地址:https://www.cnblogs.com/heimaguangzhou/p/11678945.html
- Linux下对lvm逻辑卷分区大小的调整(针对xfs和ext4不同文件系统)
- centos6.5虚拟机安装后,没有iptables配置文件
- 温故而知新:设计模式之Builder
- 温故而知新:设计模式之单件模式(Singleton)
- sudo命令使用的几个场景
- .NET Core系列 : 2 、project.json 这葫芦里卖的什么药
- 关闭与恢复visual studio实时调试器
- linux系统下的权限知识梳理
- c#如何启动/干掉/查找 进程
- Android中Application的应用
- 孟昭莉博士:大数据大道之行
- .NET Core系列 :3 、使用多个项目
- 完整部署CentOS7.2+OpenStack+kvm 云平台环境(2)--云硬盘等后续配置
- 完整部署CentOS7.2+OpenStack+kvm 云平台环境(3)--为虚拟机指定固定ip
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【每周一库】 rust-ftp - an FTP client written in Rust
- Mall 电商实战项目发布重大更新,全面支持SpringBoot 2.3.0 !
- Python与Tableau相结合,万字长文搞定传统线下连锁店数据分析
- 社群答疑精选03:拆分数据到新工作表
- 【Rust日报】2020-08-08:用rust制作的一个Taskwarrior终端用户界面
- 【Rust日报】2020-08-09:1Paasword Linux版本
- 聊聊dubbo-go的failfastCluster
- Caused by: java.lang.ClassNotFoundException: Cannot find class: userMap
- 链路聚合实验
- 聊聊dubbo-go的failsafeCluster
- Phenotype : 大规模表型数据处理工具
- 聊聊dubbo-go的registryAwareCluster
- 老伙计,关于JDK并发包,这些不为人知的秘密你知道多少?
- 不能错过的分布式ID生成器(Leaf ),好用的一批
- 微信小程序开发实战(20):TabBar导航