博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Socketserver
阅读量:4702 次
发布时间:2019-06-09

本文共 1385 字,大约阅读时间需要 4 分钟。

 Socketserver:

基于tcp的套接字,关键就是两个循环,一个链接循环,一个通信循环socketserver模块中分两大类:server类(解决链接问题)和 request类(解决通信问题)

 

基于tcp  的socketserver我们自己定义的类中的  self.server即套接字对象  self.request即一个链接  self.client_address即客户端地址基于udp  的socketserver我们自己定义的类中的  self.request是一个元组(第一个元素是客户端发来的数据,第二部分是服务端的udp套接字对象),如(b'adsf', 
)  self.client_address即客户端地址

 

线程实现: 

             

 

进程实现:

 

 

 

 

 

socketserver —— 实现ftp server端和client端的交互

import socketserverclass MyServer(socketserver.BaseRequestHandler):    def handle(self):        conn = self.request        conn.sendall(bytes('欢迎致电 10086,请输入1xxx,0转人工服务.',encoding='utf-8'))        Flag = True        while Flag:            data = conn.recv(1024).decode('utf-8')            if data == 'exit':                Flag = False            elif data == '0':                conn.sendall(bytes('通过可能会被录音.balabala一大推',encoding='utf-8'))            else:                conn.sendall(bytes('请重新输入.',encoding='utf-8'))if __name__ == '__main__':    server = socketserver.ThreadingTCPServer(('127.0.0.1',8008),MyServer)    server.serve_forever()
import socketip_port = ('127.0.0.1',8008)sk = socket.socket()sk.connect(ip_port)sk.settimeout(5)while True:    data = sk.recv(1024).decode('utf-8')    print('receive:',data)    inp = input('please input:')    sk.sendall(bytes(inp,encoding='utf-8'))    if inp == 'exit':        breaksk.close()

转载于:https://www.cnblogs.com/big-handsome-guy/p/7644304.html

你可能感兴趣的文章
PostGreSql安装
查看>>
idea maven 依赖报错 invalid classes root
查看>>
【剑指offer】合并两个排序的链表
查看>>
报到篇
查看>>
dubbo系列五、dubbo核心配置
查看>>
自定义ComboBox,简简单单实现
查看>>
MYSQL导入,导出命令。
查看>>
ORA-12560: TNS: 协议适配器错误
查看>>
Unsafe 学习和源码阅读
查看>>
YTU 2987: 调整表中元素顺序(线性表)
查看>>
JSP中文乱码
查看>>
Apache
查看>>
XE8 (RTM) Android SDK 更新安装
查看>>
ROS之rviz显示历史运动轨迹、路径的各种方法(visualization_msgs/Marker、nav_msgs/Path)...
查看>>
SCP-bzoj-1079
查看>>
Python 实践项目 游戏
查看>>
AJAX--Jquery
查看>>
模拟新浪微博随便看看
查看>>
环境搭建
查看>>
解密EXL
查看>>