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. Python练习-迭代器-模拟cat|grep文件

    代码如下: # 编辑者:闫龙 def grep(FindWhat): f=open("a.txt","r",encoding="utf8") ...

  2. 新电脑重新安装win10+python3.6+anaconda+tensorflow1.12(gpu版)

    安装了一天的软件,遇到了很多坑,在快泪崩的时候,始终以磨刀不误砍柴工鼓励自己,坚持安好了,话不多说,上干货: 前言:        TensorFlow 有两个版本:CPU 版本和 GPU 版本.GP ...

  3. Ubuntu自定义终端窗口位置

    方法一: 自定义终端启动快捷键 具体方法是自定义一个快速启动终端的快捷键,附带设置终端启动时的位置参数.首先获得需要放置窗口的目标位置信息,可以通过终端命令“ xwininfo ”来获得.步骤是首先打 ...

  4. Java中关于变量的几种情况

    Java中关于变量的几种情况 1.继承时变量的引用关系 class Animals { int age = 10; void enjoy() { System.out.println("An ...

  5. ETL利器Kettle实战应用解析系列三

    本系列文章主要索引如下: 一.ETL利器Kettle实战应用解析系列一[Kettle使用介绍] 二.ETL利器Kettle实战应用解析系列二 [应用场景和实战DEMO下载] 三.ETL利器Kettle ...

  6. 26 About the go command go命令行

    About the go command  go命令行 Motivation Configuration versus convention Go's conventions Getting star ...

  7. align="absmiddle" 的意义

    align=absmiddle表示图像的中间与同一行中最大元素的中间对齐 AbsBottom 图像的下边缘与同一行中最大元素的下边缘对齐. AbsMiddle   图像的中间与同一行中最大元素的中间对 ...

  8. 分别使用docx4j,jacob将文字与图片插入word中书签位置

    项目中需要将一段文字,与人员的签名(图片)插入到上传的word中,上网查询了一下,有许多种方式可以向word中插入文字,发现docx4j与jacob都为比较常见的解决方案,于是就先使用的docx4j进 ...

  9. Unix IPC之Posix消息队列(1)

    部分参考:http://www.cnblogs.com/Anker/archive/2013/01/04/2843832.html IPC对象的持续性:http://book.51cto.com/ar ...

  10. (二)HtmlUnit 使用

    第一节: htmlunit 模拟浏览器请求 第二节: htmlunit 获取指定元素 第三节: htmlunit 使用代理 IP 第四节: htmlunit 取消 css,javascript 支持 ...