python 简单的多线程链接实现代码


Posted in Python onAugust 28, 2016

服务端:

#!/usr/bin/env
import SocketServer
class myMonitorHandler(SocketServer.BaseRequestHandler):
 def handle(self):
  self.data=self.request.recv(1024).strip()
  print "From %s : %s" %(self.client_address,self.data)
if __name__=="__main__":
 HOST,PORT='0.0.0.0',18000
 server=SocketServer.ThreadingTCPServer((HOST,PORT),myMonitorHandler)
 server.serve_forever()
 server.close()

客户端:

#!/usr/bin/env python
import socket
host,port="10.23.30.191",18000
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((host,port))
s.send("UP")
~

服务端运行结果:
From ('10.23.30.61', 45809) : UP
From ('10.23.30.61', 45810) : UP
From ('10.23.30.61', 45811) : UP
From ('10.23.30.61', 45812) : UP
From ('10.23.30.61', 45813) : UP
From ('10.23.30.61', 45814) : UP
From ('10.23.30.61', 45815) : UP

python 简单的多线程链接(二)

一。简单的多线程(服务器端添加了时间标签)
1.1 服务端

#!/usr/bin/env
import datetime
import SocketServer
classmyMonitorHandler(SocketServer.BaseRequestHandler):
    def handle(self):
       self.data=self.request.recv(1024).strip()
        print "From %s : %s  :%s"%(self.client_address,datetime.datetime.now(),self.data)
if__name__=="__main__":
    HOST,PORT='0.0.0.0',18000
   server=SocketServer.ThreadingTCPServer((HOST,PORT),myMonitorHandler)
    server.serve_forever()
    server.close()

1.2 客户端:

#!/usr/bin/envpython

import socket

host,port="192.168.1.103",18000
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((host,port))
s.send("UP")

结果:
From('192.168.1.104', 58032) : 2013-12-24 06:47:03.620356   :UP
From('192.168.1.104', 58033) : 2013-12-24 06:47:05.464851   :UP
From('192.168.1.104', 58034) : 2013-12-24 06:47:06.273092   :UP

二.服务器端添加时间标签后(判断30秒更新发送)

2.1 首先要有字典存放客户端的信息
先定义1个空字典

#!/usr/bin/env
importdatetime
importSocketServer
host_status={}

f=open('client.txt')
while 1:
    line=f.readline().split()
    if len(line)==0:break
    host_status[line[0]]= []
f.close()

classmyMonitorHandler(SocketServer.BaseRequestHandler):
    def handle(self):
       self.data=self.request.recv(1024).strip()
        if self.client_address[0] inhost_status.keys():
           host_status[self.client_address[0]].append((datetime.datetime.now(),self.data))
            print "From %s :%s  :%s"%(self.client_address,datetime.datetime.now(),self.data)
        else:
            print "sorry,IP %sis't in the monitor list!" %self.client_address[0]
        for t,m in host_status.items():
            print t,m

if__name__=="__main__":
    HOST,PORT='0.0.0.0',18000
   server=SocketServer.ThreadingTCPServer((HOST,PORT),myMonitorHandler)
    server.serve_forever()
    server.close()

解释:

#!/usr/bin/env
import datetime
import SocketServer
host_status={} #定义个空子典用来存储客户端发送的信息和时间

f=open('client.txt') #文件的读取
while 1:
    line=f.readline().split() #文件的读取并分段
    if len(line)==0:break  #结尾退出
host_status[line[0]]= [] #初始化字典,把文件中的ip设置为字典的key
f.close()

classmyMonitorHandler(SocketServer.BaseRequestHandler):
    def handle(self):
       self.data=self.request.recv(1024).strip()
        ifself.client_address[0] in host_status.keys():#如果获取客户端ip在字典的列表的key中
           host_status[self.client_address[0]].append((datetime.datetime.now(),self.data)) #这儿采用追加的方式
            print"From %s : %s  :%s"%(self.client_address,datetime.datetime.now(),self.data)#输出客户端的ip ,连接时间,发送的内容
        else:
            print"sorry,IP %s is't in the monitor list!" %self.client_address[0]#不在提示
        for t,m inhost_status.items():#字典输出
            printt,m  #字典的输出

if__name__=="__main__":
    HOST,PORT='0.0.0.0',18000
   server=SocketServer.ThreadingTCPServer((HOST,PORT),myMonitorHandler)
    server.serve_forever()
    server.close()

本文出自 “lzt417” 博客

Python 相关文章推荐
Python中装饰器的一个妙用
Feb 08 Python
编写Python小程序来统计测试脚本的关键字
Mar 12 Python
python中将一个全部为int的list 转化为str的list方法
Apr 09 Python
Python实现判断一行代码是否为注释的方法
May 23 Python
python读取并定位excel数据坐标系详解
Jun 26 Python
Python使用Pandas库实现MySQL数据库的读写
Jul 06 Python
深入浅析Python 中的sklearn模型选择
Oct 12 Python
Python 列表推导式需要注意的地方
Oct 23 Python
python 读取串口数据的示例
Nov 09 Python
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
Apr 06 Python
pytorch 中nn.Dropout的使用说明
May 20 Python
Python利用capstone实现反汇编
Apr 06 Python
python使用电子邮件模块smtplib的方法
Aug 28 #Python
python daemon守护进程实现
Aug 27 #Python
Python+微信接口实现运维报警
Aug 27 #Python
python实现获取Ip归属地等信息
Aug 27 #Python
python简单实现获取当前时间
Aug 27 #Python
python使用psutil模块获取系统状态
Aug 27 #Python
Django Highcharts制作图表
Aug 27 #Python
You might like
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
点评山进PR-D3L三波段收音机
2021/03/02 无线电
PHP序列号生成函数和字符串替换函数代码
2012/06/07 PHP
怎样使用php与jquery设置和读取cookies
2013/08/08 PHP
php中注册器模式类用法实例分析
2015/11/03 PHP
PHP中模拟链表和链表的基本操作示例
2016/02/27 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
仿猪八戒网左下角的文字滚动效果
2011/10/28 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
bootstrap+jQuery实现的动态进度条功能示例
2017/05/25 jQuery
Bootstrap Table从零开始
2017/06/30 Javascript
jQuery EasyUI开发技巧总结
2017/09/26 jQuery
用jquery获取select标签中选中的option值及文本的示例
2018/01/25 jQuery
Vue的elementUI实现自定义主题方法
2018/02/23 Javascript
vue 下列表侧滑操作实例代码详解
2018/07/24 Javascript
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
JS简易计算器实例讲解
2020/06/30 Javascript
浅谈vue.watch的触发条件是什么
2020/11/07 Javascript
[07:38]2014DOTA2国际邀请赛 Newbee顺利挺进胜者组赛后专访
2014/07/15 DOTA
详细讲解Python中的文件I/O操作
2015/05/24 Python
python中的不可变数据类型与可变数据类型详解
2018/09/16 Python
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
Python递归及尾递归优化操作实例分析
2020/02/01 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
Nike德国官网:Nike.com (DE)
2018/11/13 全球购物
五年后的职业生涯规划
2014/03/04 职场文书
师德建设实施方案
2014/03/21 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
环保倡议书100字
2014/05/15 职场文书
企业承诺书格式
2014/05/21 职场文书
国防教育标语
2014/10/08 职场文书
加强机关作风建设心得体会
2014/10/22 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
小学中队长竞选稿
2015/11/20 职场文书
800字作文之大雪
2019/12/04 职场文书