博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
10月10日学习内容整理:socketserver模块,ftp作业讲解
阅读量:6280 次
发布时间:2019-06-22

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

一、socketserver模块

1、作用:用来实现并发编程

2、py2和py3的区别:py3是socketserver   py2是SocketServer

3、和socket模块还有multiprocessing模块的区别:

》》》和socket模块:socket在py2中是只能实现串行编程,不能实现并发,只能等一个客户端执行完后才能执行下一个客户端;在py3中单纯的使用socket模块也可以多个客户端同时访问服务端,但也是只能一个客户端执行完后再执行下一个客户端,但是我们通常还是用socketserver模块

》》》和multiprocessing模块:若用socket模块和创建子进程模块(multiprocessing),其实是启用了server的多个子进程,实际上是启用了多个server,是对电脑资源的浪费;而socketserver模块就是实现并发编程的,只有一个server,多个客户端可以同时访问。

 

补充:对于socket模块,py3中send必须用字节类型,但在py2中可以用字符串类型发送

》》》》》举例

服务端

import socketserverclass MyServer(socketserver.BaseRequestHandler):    #固定   必须定义一个类且和下面的名字一样,必须继承    def handle(self):    #固定 必须写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)   #固定,仍然是服务端的IP和端口号,类的名字可以自己取,但必须                                                 和定义的一样    server.serve_forever()   #固定 这两句话就自动执行handle函数

 

客户端

import socket    #客户端没有区别ip_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/wanghl1011/articles/7647209.html

你可能感兴趣的文章
bootstrap-进度条
查看>>
并发学习心得
查看>>
find、xargs命令使用及方法详解
查看>>
系统提示硬盘不够用的处理方法
查看>>
curl工具post用法
查看>>
我的友情链接
查看>>
lvs+keepalived实现web负载及高可用
查看>>
C# 分享几个ip的方法吧,包括正则验证ip
查看>>
sudo apt-get 与 yum安装有啥区别
查看>>
在 jQuery Repeater 进行验证更新等操作时提示消息
查看>>
2018-2019-2 20162329 《网络对抗技术》Exp7: 网络欺诈防范
查看>>
iPhone NSBundle的使用
查看>>
Memory Cache(内存缓存)
查看>>
Java技术相关
查看>>
操作系统概述总结
查看>>
北京程序员 VS 硅谷程序员(转)
查看>>
[AX]AX2012 使用视图
查看>>
20161108学习笔记
查看>>
手把手教你把Vim改装成一个IDE编程环境(图文)
查看>>
Git: 在CentOS上设置共享Repository
查看>>