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多线程的更多相关文章

  1. python进阶篇

    python进阶篇 import 导入模块 sys.path:获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到. ​ import sys ...

  2. (转载)Python一篇学会多线程

    Python 一篇学会多线程 链接:https://www.cnblogs.com/yeayee/p/4952022.html  多线程和多进程是什么自行google补脑,廖雪峰官网也有,但是不够简洁 ...

  3. Python进阶基础学习(多线程)

    Python进阶学习笔记(一) threading模块 threading.thread(target = (函数)) 负责定义子线程对象 threading.enumerate() 负责查看子线程对 ...

  4. Python 一篇学会多线程

    多线程和多进程是什么自行google补脑,廖雪峰官网也有,但是不够简洁,有点晕,所以就整个简单的范例. 对于python 多线程的理解,我花了很长时间,搜索的大部份文章都不够通俗易懂.所以,这里力图用 ...

  5. Python 进阶 之 socket模块

    Python Socket 编程详细介绍 转载地址:https://gist.github.com/kevinkindom/108ffd675cb9253f8f71?signup=true Pytho ...

  6. Python 进阶篇

    作者:武沛齐 出处:http://www.cnblogs.com/wupeiqi/articles/5246483.html Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这 ...

  7. [经典]Python 一篇学会多线程

    对于python 多线程的理解,我花了很长时间,搜索的大部份文章都不够通俗易懂.所以,这里力图用简单的例子,让你对多线程有个初步的认识. 单线程 在好些年前的MS-DOS时代,操作系统处理问题都是单任 ...

  8. Go语言之进阶篇Socket编程

    一.Socket编程 1.什么是Socket Socket起源于Unix,而Unix基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭clo ...

  9. Python进阶篇四:Python文件和流

    摘要: Python对于文件和流的操作与其他编程语言基本差不多,甚至语句上比其他语言更为简洁.文件和流函数针对的对象除了这两者之外还有,类文件(file-like),即python中只支持读却不支持写 ...

随机推荐

  1. 渗透测试的WINDOWS NTFS技巧集合

    译者:zzzhhh 这篇文章是来自SEC Consult Vulnerability Lab的ReneFreingruber (@ReneFreingruber),分享了过去几年从各种博客文章中收集的 ...

  2. python基础===一行 Python 代码实现并行(转)

    原文:https://medium.com/building-things-on-the-internet/40e9b2b36148 译文:https://segmentfault.com/a/119 ...

  3. Asp.Net使用百度编辑器(ueditor)

    1.  1.4.3以上版本将不再承诺支持ie6/ie7. 2.如果是aspx 需要加上  ValidateRequest="false" 3.Web.config <syst ...

  4. 001_Mac键盘图标与对应快捷按键标志汇总

    Mac键盘图标与对应快捷按键 ⌘——Command () win键 ⌃ ——Control ctrl键 ⌥——Option (alt) ⇧——Shift ⇪——Caps Lock fn——功能键就是 ...

  5. mysql高可用架构 -> MHA主从复制-03

    GTID复制技术说明 GTID的全称为 global transaction identifier ,可以翻译为全局事务标示符,GTID在原始master上的事务提交时被创建.GTID需要在全局的主- ...

  6. SQLite数据库初步

    Windows 10家庭中文版 想使用Python操作SQLite数据库,可是,不知道怎么建立数据库文件. 在SQLite官网溜达了一圈,总算使用上面的工具安装了建立了我需要的数据库文件. 1.进入官 ...

  7. 数据库-mysql数据操作

    一:mysql 数据的插入 语法 以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法: INSERT INTO table_name ( field1, field2,...f ...

  8. plsql developer配置

    一:今天plsql developer连接 出问题了 ,Oracleclient没正确安装 0.连接vpn 1.环境变量:TNS_ADMIN = D:\worksoftware\oracleClien ...

  9. 组件化表单解决方案AForm 1.3 发布

    v1.3 更新日志 输入控件的实现改为实例化模式,同类型多个输入控件在同一个表单不会冲突 输入控件实现了继承 可以使用AForm.create创建表单,和使用new AForm创建实例的参数和结果一样 ...

  10. opencv(3)视频操作

    视频中最常用的就是从视频设备采集图片或者视频,或者读取视频文件并从中采样.所以比较重要的也是两个模块,一个是VideoCapture,用于获取相机设备并捕获图像和视频,或是从文件中捕获.还有一个Vid ...