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验证码识别处理实例
Dec 28 Python
浅谈python中copy和deepcopy中的区别
Oct 23 Python
Windows下将Python文件打包成.EXE可执行文件的方法
Aug 03 Python
小白入门篇使用Python搭建点击率预估模型
Oct 12 Python
python绘制散点图并标记序号的方法
Dec 11 Python
解决pyttsx3无法封装的问题
Dec 24 Python
微信公众号token验证失败解决方案
Jul 22 Python
nginx+uwsgi+django环境搭建的方法步骤
Nov 25 Python
解决Tensorflow 内存泄露问题
Feb 05 Python
Pycharm自动添加文件头注释和函数注释参数的方法
Oct 23 Python
matplotlib之pyplot模块之标题(title()和suptitle())
Feb 22 Python
python 爬取豆瓣网页的示例
Apr 13 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
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
PHP对象递归引用造成内存泄漏分析
2014/08/28 PHP
C/S和B/S两种架构区别与优缺点分析
2014/10/23 PHP
php图片的二进制转换实现方法
2014/12/15 PHP
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
php中array_unshift()修改数组key注意事项分析
2016/05/16 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
超棒的javascript页面顶部卷动广告效果
2007/12/01 Javascript
Javascript 鼠标移动上去小三角形滑块缓慢跟随效果
2013/04/26 Javascript
JS获取当前日期和时间的简单实例
2013/11/19 Javascript
js控制TR的显示隐藏
2016/03/04 Javascript
深入理解js promise chain
2016/05/05 Javascript
jquery中取消和绑定hover事件的实现代码
2016/06/02 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
EasyUI折叠表格层次显示detailview详解及实例
2016/12/28 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
2017/08/10 Javascript
基于 Vue.js 2.0 酷炫自适应背景视频登录页面实现方式
2018/01/17 Javascript
mint-ui 时间插件使用及获取选择值的方法
2018/02/09 Javascript
vue里input根据value改变背景色的实例
2018/09/29 Javascript
vue打包之后生成一个配置文件修改接口的方法
2018/12/09 Javascript
vue router带参数页面刷新或回退参数消失的解决方法
2019/02/27 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
node 解析图片二维码的内容代码实例
2019/09/11 Javascript
JS实现横向跑马灯效果代码
2020/04/20 Javascript
Python 常用模块 re 使用方法详解
2019/06/06 Python
Django bulk_create()、update()与数据库事务的效率对比分析
2020/05/15 Python
Python3 webservice接口测试代码详解
2020/06/23 Python
使用CSS3的appearance属性改变任何元素的浏览器默认风格
2012/12/24 HTML / CSS
健康监测猫砂:Pretty Litter
2017/05/25 全球购物
建筑自我鉴定
2013/10/19 职场文书
网上卖盒饭创业计划书
2014/01/26 职场文书
房屋过户委托书范本
2014/10/07 职场文书
停车场管理协议书范本
2014/10/08 职场文书
2016学习依法治国心得体会
2016/01/15 职场文书
解决golang结构体tag编译错误的问题
2021/05/02 Golang
Python图片验证码降噪和8邻域降噪
2021/08/30 Python