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. Spring4笔记7--AspectJ 对 AOP 的实现

    AspectJ 对 AOP 的实现: 对于 AOP 这种编程思想,很多框架都进行了实现.Spring 就是其中之一,可以完成面向切面编程.然而,AspectJ 也实现了 AOP 的功能,且其实现方式更 ...

  2. 【FCS NOI2018】福建省冬摸鱼笔记 day4

    第四天. 动态规划专题,讲师:闫神 讲了一些DP优化技巧,然而思想难度好大啊……根本没想到能优化那地步,连DP方程都没有呢. 不过有几题我还是想明白了. 讲了单调队列,决策单调性,四边形不等式,斜率优 ...

  3. weblogic更改端口

    两种方式: 1.访问console控制台页面,进入“环境\服务器\需要修改端口的服务器如AdminServer”,修改监听端口,保存并激活更改即可: 2.修改配置文件,进入weblogic的域目录,如 ...

  4. 栈应用之 括号匹配问题(Python 版)

    栈应用之 括号匹配问题(Python 版) 检查括号是否闭合 循序扫描被检查正文(一个字符)里的一个个字符 检查中跳过无关字符(所有非括号字符都与当前处理无关) 遇到开括号将其压入栈 遇到闭括号时弹出 ...

  5. 数据库-mysql事务

    MySQL 事务 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数 ...

  6. 如何在线预览github上的html页面?

    可以通过http://htmlpreview.github.io/这个网站,直接在线预览html页面. ↓    ↓ 可以发现:这个网站直接将github上的页面地址当做参数来传递.

  7. CSS3小黄人

    CSS3实现小黄人 效果图: 代码如下,复制即可使用: <!DOCTYPE HTML> <HTML> <head> <title>CSS3实现小黄人&l ...

  8. Unix IPC之Posix消息队列(2)

    /* Query status and attributes of message queue MQDES. */ extern int mq_getattr (mqd_t __mqdes, stru ...

  9. Git missing in VS Code – No source control providers

    解决办法:管理->设置->搜索[git.enabled]和[git.path],分别设置下即可. 注意"git.enabled: true",只设置git.path是不 ...

  10. SQL语句添加删除修改字段[sql server 2000/2005]

    用SQL语句添加删除修改字段1.增加字段     alter table docdsp    add dspcodechar(200)2.删除字段     ALTER TABLE table_NAME ...