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写个小监控
Jan 27 Python
python 调用c语言函数的方法
Sep 29 Python
浅谈python中的占位符
Nov 09 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
Apr 26 Python
深入浅析Python的类
Jun 22 Python
Python框架Flask的基本数据库操作方法分析
Jul 13 Python
pycharm 取消默认的右击运行unittest的方法
Nov 29 Python
PyTorch的深度学习入门之PyTorch安装和配置
Jun 27 Python
python3多线程知识点总结
Sep 26 Python
pycharm 设置项目的根目录教程
Feb 12 Python
python3 中时间戳、时间、日期的转换和加减操作
Jul 14 Python
Python获取指定网段正在使用的IP
Dec 14 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
php 各种应用乱码问题的解决方法
2010/05/09 PHP
ThinkPHP跳转页success及error模板实例教程
2014/07/17 PHP
一端时间轮换的广告
2006/06/26 Javascript
Javascript实例教程(19) 使用HoTMetal(5)
2006/12/23 Javascript
jquery.post用法关于type设置问题补充
2014/01/03 Javascript
js身份证判断方法支持15位和18位
2014/03/18 Javascript
jQuery中offset()方法用法实例
2015/01/16 Javascript
简介JavaScript中valueOf()方法的使用
2015/06/05 Javascript
JavaScript字符串删除重复字符的方法
2015/12/25 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
探索Javascript中this的奥秘
2016/12/11 Javascript
vue-router:嵌套路由的使用方法
2017/02/21 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
layui 动态设置checbox 选中状态的例子
2019/09/02 Javascript
详解JS预解析原理
2020/06/16 Javascript
实例讲解React 组件
2020/07/07 Javascript
原生js实现简单轮播图
2020/10/26 Javascript
JavaScript基于SVG的图片切换效果实例代码
2020/12/15 Javascript
Python中%r和%s的详解及区别
2017/03/16 Python
Django数据库操作的实例(增删改查)
2017/09/04 Python
Django csrf 验证问题的实现
2018/10/09 Python
Python新手如何进行闭包时绑定变量操作
2020/05/29 Python
Python如何自动获取目标网站最新通知
2020/06/18 Python
使用BeautifulSoup4解析XML的方法小结
2020/12/07 Python
如何用python批量调整视频声音
2020/12/22 Python
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
工程业务员岗位职责
2013/12/31 职场文书
护士毕业自我鉴定
2014/02/07 职场文书
幼儿园春季开学寄语
2014/04/03 职场文书
2014年度个人工作总结
2014/11/07 职场文书
区域销售经理岗位职责
2015/04/02 职场文书
安全教育片观后感
2015/06/17 职场文书
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis