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实现的登录和操作开心网脚本分享
Jul 09 Python
python基于BeautifulSoup实现抓取网页指定内容的方法
Jul 09 Python
Python使用win32com实现的模拟浏览器功能示例
Jul 13 Python
python使用mysql的两种使用方式
Mar 07 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
Jul 04 Python
tensorflow实现逻辑回归模型
Sep 08 Python
python调用matlab的m自定义函数方法
Feb 18 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 Python
Django values()和value_list()的使用
Mar 31 Python
Python中无限循环需要什么条件
May 27 Python
pytorch 带batch的tensor类型图像显示操作
May 20 Python
python代码实现备忘录案例讲解
Jul 26 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面向对象的方法重载两种版本比较
2008/09/08 PHP
PHP 工厂模式使用方法
2010/05/18 PHP
php获取网页标题和内容函数(不包含html标签)
2014/02/03 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
2019/09/10 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
ExtJS Grid使用SimpleStore、多选框的方法
2009/11/20 Javascript
Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
2010/09/12 Javascript
Web开发之JavaScript
2012/03/29 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
2013/11/01 Javascript
文本框文本自动补全效果示例分享
2014/01/19 Javascript
js实现二代身份证号码验证详解
2014/11/20 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
2016/05/05 Javascript
动态加载权限管理模块中的Vue组件
2018/01/16 Javascript
JavaScript常见事件处理程序实例总结
2019/01/05 Javascript
uni-app自定义导航栏按钮|uniapp仿微信顶部导航条功能
2019/11/12 Javascript
es6中let和const的使用方法详解
2020/02/24 Javascript
Nodejs 微信小程序消息推送的实现
2021/01/20 NodeJs
在Linux上安装Python的Flask框架和创建第一个app实例的教程
2015/03/30 Python
python 对象和json互相转换方法
2018/03/22 Python
Django如何使用第三方服务发送电子邮件
2019/08/14 Python
python实现简易淘宝购物
2019/11/22 Python
Python嵌套函数,作用域与偏函数用法实例分析
2019/12/26 Python
python 画条形图(柱状图)实例
2020/04/24 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
python实现银行账户系统
2021/02/22 Python
Html5 postMessage实现跨域消息传递
2016/03/11 HTML / CSS
Html5监听手机摇一摇事件的实现
2019/11/07 HTML / CSS
新加坡时尚网上购物:Zalora新加坡
2016/07/26 全球购物
static全局变量与普通的全局变量有什么区别
2014/05/27 面试题
毕业生的自我评价分享
2013/12/18 职场文书
2014年寒假社会实践活动心得体会
2014/04/07 职场文书
十佳少年事迹材料
2014/12/25 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
Ruby序列化和持久化存储 Marshal和Pstore介绍
2022/04/18 Ruby