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网络编程调用recv函数完整接收数据的三种方法
Mar 31 Python
Python实现判断字符串中包含某个字符的判断函数示例
Jan 08 Python
Python爬虫设置代理IP的方法(爬虫技巧)
Mar 04 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
May 08 Python
Python并发之多进程的方法实例代码
Aug 15 Python
深入理解python中sort()与sorted()的区别
Aug 29 Python
Python图像处理之gif动态图的解析与合成操作详解
Dec 30 Python
python实现将多个文件分配到多个文件夹的方法
Jan 07 Python
python读写csv文件方法详细总结
Jul 05 Python
在 Python 中接管键盘中断信号的实现方法
Feb 04 Python
python3实现名片管理系统(控制台版)
Nov 29 Python
virtualenv隔离Python环境的问题解析
Jun 21 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
农民C键的运用技巧
2020/03/04 星际争霸
PHP 判断变量类型实现代码
2009/10/23 PHP
解决文件名解压后乱码的问题 将文件名进行转码的代码
2012/01/10 PHP
使用php计算排列组合的方法
2013/11/13 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
网站导致浏览器崩溃的原因总结(多款浏览器) 推荐
2010/04/15 Javascript
文本框中,回车键触发事件的js代码[多浏览器兼容]
2010/06/07 Javascript
jquery 学习之二 属性(类)
2010/11/25 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
2014/03/03 Javascript
node.js中的fs.lchownSync方法使用说明
2014/12/16 Javascript
详解基于Bootstrap扁平化的后台框架Ace
2015/11/27 Javascript
jquery实现倒计时效果
2015/12/14 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
简单谈谈json跨域
2016/03/13 Javascript
在web中js实现类似excel的表格控件
2016/09/01 Javascript
js实现图片360度旋转
2017/01/22 Javascript
js实现本地图片文件拖拽效果
2017/07/18 Javascript
jQuery niceScroll滚动条错位问题的解决方法
2018/02/03 jQuery
vue组件通信传值操作示例
2019/01/08 Javascript
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
python编程嵌套函数实例代码
2018/02/11 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
Python如何存储数据到json文件
2020/03/09 Python
python 如何区分return和yield
2020/09/22 Python
印度网上购物首选目的地:Flipkart
2016/08/01 全球购物
世界最大的海报和艺术印刷商店:AllPosters.com
2017/02/01 全球购物
北美领先的牛仔品牌:Buffalo David Bitton
2017/05/22 全球购物
怎样声明接口
2014/09/19 面试题
总经理岗位职责
2013/11/09 职场文书
小摄影师教学反思
2014/04/27 职场文书
会议开幕致辞怎么写
2016/03/03 职场文书
Python开发工具Pycharm的安装以及使用步骤总结
2021/06/24 Python