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 Django连接MySQL数据库做增删改查
Nov 07 Python
跟老齐学Python之永远强大的函数
Sep 14 Python
python使用threading获取线程函数返回值的实现方法
Nov 15 Python
python实现Floyd算法
Jan 03 Python
pandas读取csv文件,分隔符参数sep的实例
Dec 12 Python
Python制作exe文件简单流程
Jan 24 Python
python pytest进阶之xunit fixture详解
Jun 27 Python
python 字典有序并写入json文件过程解析
Sep 30 Python
python颜色随机生成器的实例代码
Jan 10 Python
python中的yield from语法快速学习
Nov 06 Python
Scrapy实现模拟登录的示例代码
Feb 21 Python
如何用Python搭建gRPC服务
Jun 30 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
解析CodeIgniter自定义配置文件
2013/06/18 PHP
php实现的二分查找算法示例
2017/06/20 PHP
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
让IE6支持min-width和max-width的方法
2010/06/25 Javascript
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
JavaScript实现动态删除列表框值的方法
2015/08/12 Javascript
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
2015/08/21 Javascript
jQuery实现打开页面渐现效果示例
2016/07/27 Javascript
本地存储localStorage用法详解
2017/07/31 Javascript
vue-quill-editor实现图片上传功能
2017/08/08 Javascript
浅谈vue引入css,less遇到的坑和解决方法
2018/01/20 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
vue实现微信二次分享以及自定义分享的示例
2019/03/20 Javascript
javascript中undefined的本质解析
2019/07/31 Javascript
基于VUE的v-charts的曲线显示功能
2019/10/01 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
2020/02/03 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
小程序Scroll-view上拉滚动刷新数据
2020/06/21 Javascript
typescript配置alias的详细步骤
2020/08/12 Javascript
python复制文件代码实现
2013/12/23 Python
Python搜索引擎实现原理和方法
2017/11/27 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
python redis 批量设置过期key过程解析
2019/11/26 Python
使用HTML5中的contentEditable来将多行文本自动增高
2016/03/01 HTML / CSS
Trip.com香港网站:Ctrip携程旗下,全球最大的网上旅游社之一
2016/08/01 全球购物
奇怪的鱼:Weird Fish
2018/03/18 全球购物
如何查看在weblogic中已经发布的EJB
2012/06/01 面试题
Java如何读取CLOB字段
2013/10/10 面试题
通信工程毕业生自荐信
2013/11/01 职场文书
旅游个人求职信范文
2014/01/30 职场文书
工资收入证明样本(5篇)
2014/09/16 职场文书
红十字会救护培训简讯
2015/07/20 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书
Opencv实现二维直方图的计算及绘制
2021/07/21 Python
flex布局中使用flex-wrap实现换行的项目实践
2022/06/21 HTML / CSS