Python进阶篇:Socket多线程
1. 初识Socket
server和clinet之间的交互方式
2. 客户端和服务端的单次交互
====================================
服务端 import socket host = '127.0.0.1'
port = 8090
sk=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sk.bind((host,port))
sk.listen(1) conn,addr = sk.accept()
accept_data = conn.recv(1024).decode('UTF-8', 'ignore')
print(accept_data)
feedback_data =("回复\""+accept_data+"\":\n\t你好,我是Server端").encode("utf8")
conn.send(feedback_data)
======================================
客户端 import socket host = '127.0.0.1'
port = 8090 sk=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sk.connect((host,port)) sk.sendall(("你好,我是Client @Simple").encode("utf8"))
data = sk.recv(1024)
print(data.decode('UTF-8', 'ignore'))
3. 客户端和服务端单线程交互
服务端 import socket host = '127.0.0.1'
port = 8090
sk=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sk.bind((host,port))
sk.listen(1) while True:
conn,addr = sk.accept()
while True:
accept_data = conn.recv(1024).decode('UTF-8', 'ignore')
if not accept_data:
break
print(accept_data)
feedback_data =("回复\""+accept_data+"\":\n\t你好,我是Server端").encode("utf8")
conn.sendall(feedback_data) conn.close()
客户端 import socket,time host = '127.0.0.1'
port = 8090 sk=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sk.connect((host,port)) for i in range(10):
sk.sendall(("你好,我是Client No.%d" %i).encode("utf8"))
data = sk.recv(1024)
print(data.decode('UTF-8', 'ignore'))
time.sleep(2)
i = i + 1
sk.close()
4. 多个客户端和服务端的多线程交互
服务端 import socketserver class myTCPhandler(socketserver.BaseRequestHandler):
def handle(self):
while True:
self.data = self.request.recv(1024).decode('UTF-8', 'ignore').strip()
if not self.data : break
print(self.data)
self.feedback_data =("回复\""+self.data+"\":\n\t你好,我是Server端").encode("utf8")
self.request.sendall(self.feedback_data) host = '127.0.0.1'
port = 9090
server = socketserver.ThreadingTCPServer((host,port),myTCPhandler)
server.serve_forever()
客户端1-n import socket,time host = '127.0.0.1'
port = 9090 sk=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sk.connect((host,port)) for i in range(10):
sk.sendall(("你好,我是Client No.%d" %i).encode("utf8"))
data = sk.recv(1024)
print(data.decode('UTF-8', 'ignore'))
time.sleep(2)
i = i + 1
sk.close()
Python进阶篇:Socket多线程的更多相关文章
- python进阶篇
python进阶篇 import 导入模块 sys.path:获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到. import sys ...
- (转载)Python一篇学会多线程
Python 一篇学会多线程 链接:https://www.cnblogs.com/yeayee/p/4952022.html 多线程和多进程是什么自行google补脑,廖雪峰官网也有,但是不够简洁 ...
- Python进阶基础学习(多线程)
Python进阶学习笔记(一) threading模块 threading.thread(target = (函数)) 负责定义子线程对象 threading.enumerate() 负责查看子线程对 ...
- Python 一篇学会多线程
多线程和多进程是什么自行google补脑,廖雪峰官网也有,但是不够简洁,有点晕,所以就整个简单的范例. 对于python 多线程的理解,我花了很长时间,搜索的大部份文章都不够通俗易懂.所以,这里力图用 ...
- Python 进阶 之 socket模块
Python Socket 编程详细介绍 转载地址:https://gist.github.com/kevinkindom/108ffd675cb9253f8f71?signup=true Pytho ...
- Python 进阶篇
作者:武沛齐 出处:http://www.cnblogs.com/wupeiqi/articles/5246483.html Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这 ...
- [经典]Python 一篇学会多线程
对于python 多线程的理解,我花了很长时间,搜索的大部份文章都不够通俗易懂.所以,这里力图用简单的例子,让你对多线程有个初步的认识. 单线程 在好些年前的MS-DOS时代,操作系统处理问题都是单任 ...
- Go语言之进阶篇Socket编程
一.Socket编程 1.什么是Socket Socket起源于Unix,而Unix基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭clo ...
- Python进阶篇四:Python文件和流
摘要: Python对于文件和流的操作与其他编程语言基本差不多,甚至语句上比其他语言更为简洁.文件和流函数针对的对象除了这两者之外还有,类文件(file-like),即python中只支持读却不支持写 ...
随机推荐
- Python练习-一个简单的生成器
今天我们学习了生成器,怎么理解生成器呢,其实就是使用函数的方式自己建立一个迭代器 # 编辑者:闫龙 #做一个简单的生成器 def EasyGene(*args): #建立一个生成器方法并传递多个参数 ...
- fonts.googleapis.com 字体报错问题解决。
更多内容推荐微信公众号,欢迎关注: 无法加载这些字体是因为,google的网站在国内无法访问造成的.在AdminLTE.css 和AdminLte.less中有如下内容: @import url(ht ...
- Memcached服务器UDP反射放大攻击
1.前言 2月28日,Memcache服务器被曝出存在UDP反射放大攻击漏洞.攻击者可利用这个漏洞来发起大规模的DDoS攻击,从而影响网络正常运行.漏洞的形成原因为Memcache 服务器UDP 协议 ...
- Linux学习笔记-文件处理和权限命令
目录 文件处理命令 touch cat tac more less head tail 链接命令 ln 权限命令 chmod 权限管理命令 chown chgrp umask 文件处理命令 touch ...
- 使用离线包部署kubernetes 1.9.0、kubernetes-dashboard 1.8
=============================================== 2018/3/22_第2次修改 ccb_warlock 更新 ...
- spring boot 中使用redis session
spring boot 默认的httpsession是存在内存中.这种默认方式有几个缺点:1.当分布式部署时,存在session不一致的问题:2.当服务重启时session就会丢失,这时候用户就需要重 ...
- P2471 [SCOI2007]降雨量
Description 我们常常会说这样的话:"X年是自Y年以来降雨量最多的".它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年的降雨量严格小于X年.例如2 ...
- 首次加载进来DEV控件列表第一行颜色总是不对,后台代码显示的数据正确
1:行改变的颜色正确的颜色: 1.1颜色效果如下图: 1.2:设置行改变颜色: 2:结果首次加载第一行颜色为: 3:解决方案: 3.1 :Views-->OptionsSelection --& ...
- svn 批量添加命令
svn st | awk '{if ($1 == "?") {print $2} }' | xargs svn add
- 手工增加Mapping
[root@es ~]# curl -H "Content-Type:application/json" -XPOST "http://127.0.0.1:9200/t_ ...