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 10 Python
python如何统计序列中元素
Jul 31 Python
python使用Tesseract库识别验证
Mar 21 Python
Python爬虫抓取代理IP并检验可用性的实例
May 07 Python
利用python求积分的实例
Jul 03 Python
python实现邮件发送功能
Aug 10 Python
如何使用Python多线程测试并发漏洞
Dec 18 Python
python 元组和列表的区别
Dec 30 Python
pycharm如何设置官方中文(如何汉化)
Dec 29 Python
numpy实现RNN原理实现
Mar 02 Python
matlab xlabel位置的设置方式
May 21 Python
Python中的协程(Coroutine)操作模块(greenlet、gevent)
May 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
按上下级层次关系输出内容的PHP代码
2010/07/17 PHP
php自动加载方式集合
2016/04/04 PHP
Yii 2.0自带的验证码使用经验分享
2017/06/19 PHP
PHP defined()函数的使用图文详解
2019/07/20 PHP
JavaScript 变量作用域分析
2011/07/04 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
2013/04/09 Javascript
jQuery过滤选择器:not()方法使用介绍
2014/04/20 Javascript
node.js中使用q.js实现api的promise化
2014/09/17 Javascript
jQuery代码实现图片墙自动+手动淡入淡出切换效果
2016/05/09 Javascript
jquery自适应布局的简单实例
2016/05/28 Javascript
JS打开摄像头并截图上传示例
2017/02/18 Javascript
详解在Vue中通过自定义指令获取dom元素
2017/03/04 Javascript
将angular.js项目整合到.net mvc中的方法详解
2017/06/29 Javascript
动态创建Angular组件实现popup弹窗功能
2017/09/15 Javascript
简单实现vue验证码60秒倒计时功能
2017/10/11 Javascript
浅谈微信JS-SDK 微信分享接口开发(介绍版)
2018/08/15 Javascript
利用vue重构有赞商城的思路以及总结整理
2019/02/21 Javascript
vue中使用微信公众号js-sdk踩坑记录
2019/03/29 Javascript
vue-父子组件和ref实例详解
2019/11/10 Javascript
Vue前端判断数据对象是否为空的实例
2020/09/02 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
2020/11/30 Javascript
Python的动态重新封装的教程
2015/04/11 Python
Python随机生成数据后插入到PostgreSQL
2016/07/28 Python
Python 多进程并发操作中进程池Pool的实例
2017/11/01 Python
Python实现嵌套列表去重方法示例
2017/12/28 Python
Python中optparser库用法实例详解
2018/01/26 Python
python3.7 openpyxl 删除指定一列或者一行的代码
2019/10/08 Python
用 python 进行微信好友信息分析
2020/11/28 Python
DOUGLAS荷兰:购买香水和化妆品
2020/10/24 全球购物
物业管理毕业生的自我评价
2014/02/17 职场文书
2014年党课学习心得体会
2014/07/08 职场文书
学生安全责任书范本
2014/07/24 职场文书
面试感谢信范文
2015/01/22 职场文书
写给媳妇的检讨书
2015/05/06 职场文书
Python爬虫之爬取最新更新的小说网站
2021/05/06 Python