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中的序列化与反序列化的使用
Jun 30 Python
Python中动态创建类实例的方法
Mar 24 Python
Python单体模式的几种常见实现方法详解
Jul 28 Python
python2.7实现FTP文件下载功能
Apr 15 Python
使用实现XlsxWriter创建Excel文件并编辑
May 04 Python
python 3.6.2 安装配置方法图文教程
Sep 18 Python
Python中py文件转换成exe可执行文件的方法
Jun 14 Python
Python 定义只读属性的实现方式
Mar 05 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
Apr 14 Python
PyQt5实现简单的计算器
May 30 Python
selenium+headless chrome爬虫的实现示例
Jan 08 Python
Python文件的操作示例的详细讲解
Apr 08 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
在yii中新增一个用户验证的方法详解
2013/06/20 PHP
教你如何使用php session
2013/10/28 PHP
php去除二维数组的重复项方法
2015/11/03 PHP
golang与PHP输出excel示例
2016/07/22 PHP
php验证码生成器
2017/05/24 PHP
thinkphp实现附件上传功能
2017/05/26 PHP
PHP PDOStatement::debugDumpParams讲解
2019/01/30 PHP
jquery实现居中弹出层代码
2010/08/25 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
你所未知的3种Node.js代码优化方式
2016/02/25 Javascript
js获取隐藏元素宽高的实现方法
2016/05/19 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
2016/07/01 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
解析NodeJS异步I/O的实现
2017/04/13 NodeJs
JavaScript闭包_动力节点Java学院整理
2017/06/27 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
2017/07/26 Javascript
深入浅析Vue不同场景下组件间的数据交流
2017/08/15 Javascript
nodejs对express中next函数的一些理解
2017/09/08 NodeJs
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
2018/08/24 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
Vue.use()在new Vue() 之前使用的原因浅析
2019/08/26 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
vue+高德地图实现地图搜索及点击定位操作
2020/09/09 Javascript
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
完美解决python遍历删除字典里值为空的元素报错问题
2016/09/11 Python
使用python实现男神女神颜值打分系统(推荐)
2019/10/31 Python
python中提高pip install速度
2020/02/14 Python
python获取本周、上周、本月、上月及本季的时间代码实例
2020/09/08 Python
Python爬取酷狗MP3音频的步骤
2021/02/26 Python
给导游的表扬信
2014/01/10 职场文书
4s店销售经理岗位职责
2014/07/19 职场文书
三关爱志愿服务活动方案
2014/08/17 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
如何写新闻稿
2015/07/18 职场文书
2016暑期政治学习心得体会
2016/01/23 职场文书