文档章节

python socket 轻量级服务器

quanwei9958
 quanwei9958
发布于 2015/04/25 23:05
字数 220
阅读 288
收藏 11

   由于Python天生的优点,特别适用于快速实现功能。    

#!/usr/bin/python2.7
import sys
import time
import socket
#import modbus
import threading
import select
class thread(threading.Thread):
	def __init__(self,sock):
		threading.Thread.__init__(self)
		#self.commond=modbus.modbus()
		self.sock=sock
	def run(self):
		time1=time.time()-10
		time2=time.time()
		try:
			while True:
				cr,cw,ce=select.select([self.sock],[],[self.sock],1)
				time2=time.time()
				if cr:#//can read
					stream=self.sock.recv(1024)
					if not stream:
						break
					#self.commond.parse(stream)
				if ce:
					break
				if time2-time1>10:#//10s write once
					#self.sock.send(self.commond.get_all_data_by_address(0x01))
					time1=time.time()
		except Exception as error:
			print(error)
		finally:
			self.sock.close()
			print('connect closed')	
		
if __name__=='__main__':
	sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
	sock.bind(('127.0.0.1',8000))
	sock.listen(0)
	thread_list=list()
	try:
		while True:
			s,ip=sock.accept()
			print('new connect :%s:%d'%(ip[0],ip[1]))
			t=thread(s)
			t.start()
			thread_list.append(t)
	finally:
		sock.close()
		for i in thread_list:
			i.sock.close()
		print('\b\blistening exit')


  一个轻量级服务器程序,modbus模块是我进行数据的相关处理的逻辑,注释掉了。



© 著作权归作者所有

共有 人打赏支持
quanwei9958

quanwei9958

粉丝 29
博文 79
码字总数 36250
作品 0
程序员
ubuntu14.04+Django1.7.1+nginx1.6+uwsgi2.0环境搭建

ubuntu下安装django1.7.1先安装pip sudo apt-get install pip 使用pip安装django sudo pip install Django (或者下载官方最新的django包,解压后执行sudo python setup.py install) 安装完...

niceguy_php
2014/12/22
0
0
tronado 源码框架分析

一. Tornado是什么? Facebook发布了开源网络服务器框架Tornado,该平台基于Facebook刚刚收购的社交聚合网站FriendFeed的实时信息服务开发而来.Tornado由Python编写,是一款轻量级的Web服务器...

颓废的幻想者
2013/10/30
0
0
Python Socket 编程概览

简评:socket 和 socket API 用于通过网络发送消息,它们提供了一种进程间通信(IPC)方式。网络可以是计算机的逻辑本地网络,也可以是物理连接到外部网络的网络,显而易见的例子是因特网(即...

极小光
09/19
0
0
20.python中socket基本编程--20130-06-01

python 编写server的步骤: 第一步是创建socket对象。调用socket构造函数。如: socket = socket.socket( family, type ) family参数代表地址家族,可为AFINET或AFUNIX。AFINET家族包括Inter...

quanpower
2013/06/01
0
0
python --- 协程编程(第三方库gevent的使用)

1. 什么是协程?   协程(coroutine),又称微线程。协程不是线程也不是进程,它的上下文关系切换不是由CPU控制,一个协程由当前任务切换到其他任务由当前任务来控制。一个线程可以包含多个...

码农47
2017/11/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux 系统的运行级别

运行级别 运行级别 | 含义 0 关机 1 单用户模式,可以想象为windows 的安全模式,主要用于修复系统 2 不完全的命令模式,不含NFS服务 3 完全的命令行模式,就是标准的字符界面 4 系统保留 5 ...

Linux学习笔记
今天
2
0
学习设计模式——命令模式

任何模式的出现,都是为了解决一些特定的场景的耦合问题,以达到对修改封闭,对扩展开放的效果。命令模式也不例外: 命令模式是为了解决命令的请求者和命令的实现者之间的耦合关系。 解决了这...

江左煤郎
今天
3
0
字典树收集(非线程安全,后续做线程安全改进)

将500W个单词放进一个数据结构进行存储,然后进行快速比对,判断一个单词是不是这个500W单词之中的;来了一个单词前缀,给出500w个单词中有多少个单词是该前缀. 1、这个需求首先需要设计好数据结...

算法之名
昨天
14
0
GRASP设计模式

此文参考了这篇博客,建议读者阅读原文。 面向对象(Object-Oriented,OO)是当下软件开发的主流方法。在OO分析与设计中,我们首先从问题领域中抽象出领域模型,在领域模型中以适当的粒度归纳...

克虏伯
昨天
1
0
Coding and Paper Letter(四十)

资源整理。 1 Coding: 1.Tomislav Hengl撰写的非官方作者指南:Michael Gould•Wouter Gerritsma。 UnofficialGuide4Authors 2.R语言包rwrfhydro,社区贡献的工具箱,用于管理,分析和可视化...

胖胖雕
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部