Python 一步一步学网络编程
2015-11-01 00:00
691 查看
就像当初用C++写网络程序一样,Python的第一个网络程序肯定是最简单的阻塞的那种,即服务器绑定监听,等待客户端的连接,如果有客户端连接,则建立连接进行通信,服
务器是阻塞的没有多线程。
服务端:
客户端:
这个服务器的模型算是学前班级的,根本入不了门,下面就看看用多线程,客户端代码不变。
服务端:
第一个是服务端,后三个是客户端,由此可见一个服务器可以为多个客户端提供连接服务,具有一定的并发性,但是据说python的多线程内部是单线程轮询的,所以这虽然提
供了并发连接,但效率不会太好
版权声明:本文为博主原创文章,未经博主允许不得转载。
务器是阻塞的没有多线程。
服务端:
#/usr/bin/python #encoding=utf-8 import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(("127.0.0.1", 8001)) #注意这个地方是一个元组,相当于只有一个参数 sock.listen(5) print 'wait for client connect...' cltSock, cltAddr = sock.accept() while True: print'got connection from ', cltSock.getpeername() data = cltSock.recv(1024) if None == data: break else: print 'recv from client:' , data cltSock.send(data[::-1]) #将字符串翻转发送给客户端
客户端:
#/usr/bin/python #encoding=utf-8 import socket import time sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(('127.0.0.1', 8001)) #注意这个地方是一个元组,相当于只有一个参数 time.sleep(1) print 'connect server success!' while True: data = raw_input("input data you want send to server : ") sock.send(data) data = sock.recv(1024) print "recv from server:", data
这个服务器的模型算是学前班级的,根本入不了门,下面就看看用多线程,客户端代码不变。
服务端:
#/usr/bin/python #encoding=utf-8 import socket import threading from time import sleep def offerServer(s): print'got connection from ', s.getpeername() while True: data = s.recv(1024) if None == data: break else: print 'recv from client:' , data s.send(data[::-1]) #将字符串翻转发送给客户端 if __name__ == '__main__': sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(("127.0.0.1", 8001)) #注意这个地方是一个元组,相当于只有一个参数 sock.listen(5) print 'wait for client connect...' while True: cltSock, cltAddr = sock.accept() t = threading.Thread(target = offerServer, args=(cltSock,)) t.setDaemon(True) t.start() sleep(1)
第一个是服务端,后三个是客户端,由此可见一个服务器可以为多个客户端提供连接服务,具有一定的并发性,但是据说python的多线程内部是单线程轮询的,所以这虽然提
供了并发连接,但效率不会太好
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例