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实现备份文件实例
Sep 16 Python
详解Python中内置的NotImplemented类型的用法
Mar 31 Python
在Python中编写数据库模块的教程
Apr 29 Python
python处理Excel xlrd的简单使用
Sep 12 Python
Django admin美化插件suit使用示例
Dec 12 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
Jan 04 Python
Python进度条实时显示处理进度的示例代码
Jan 30 Python
Pythony运维入门之Socket网络编程详解
Apr 15 Python
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
Jun 18 Python
Python如何使用BeautifulSoup爬取网页信息
Nov 26 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
Jan 06 Python
python使用hdfs3模块对hdfs进行操作详解
Jun 06 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
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
2007/09/24 PHP
制作个性化的WordPress登陆界面的实例教程
2016/05/21 PHP
php 的反射详解及示例代码
2016/08/25 PHP
PHP支付宝当面付2.0代码
2018/12/21 PHP
javascript 获取网页参数系统
2008/07/19 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
2015/01/24 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
js遍历获取表格内数据的方法(必看)
2017/04/06 Javascript
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
AngularJS  ng-repeat遍历输出的用法
2017/06/19 Javascript
vue-scroller记录滚动位置的示例代码
2018/01/17 Javascript
nodejs简单读写excel内容的方法示例
2018/03/16 NodeJs
JS使用正则表达式实现常用的表单验证功能分析
2020/04/30 Javascript
vue实现轮播图帧率播放
2021/01/26 Vue.js
[03:42]2018完美盛典-《加冕》
2018/12/16 DOTA
python网络编程示例(客户端与服务端)
2014/04/24 Python
Python程序设计入门(4)模块和包
2014/06/16 Python
python分析nignx访问日志脚本分享
2015/02/26 Python
Python中用PIL库批量给图片加上序号的教程
2015/05/06 Python
Python实现单词翻译功能
2017/06/06 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
Python2.7 实现引入自己写的类方法
2018/04/29 Python
Python功能点实现:函数级/代码块级计时器
2019/01/02 Python
Numpy数组array和矩阵matrix转换方法
2019/08/05 Python
keras自定义回调函数查看训练的loss和accuracy方式
2020/05/23 Python
Python中return函数返回值实例用法
2020/11/19 Python
pycharm中leetcode插件使用图文详解
2020/12/07 Python
HTML5制作表格样式
2016/11/15 HTML / CSS
Tarte Cosmetics官网:美国最受欢迎的化妆品公司之一
2017/08/24 全球购物
写自荐信的七个技巧
2013/10/15 职场文书
公司出纳岗位职责
2015/03/31 职场文书
公司前台接待岗位职责
2015/04/03 职场文书
left join、inner join、right join的区别
2021/04/05 MySQL
Python爬虫基础之简单说一下scrapy的框架结构
2021/06/26 Python
PHP中多字节字符串操作实例详解
2021/08/23 PHP