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使用MD5加密字符串示例
Aug 22 Python
python通过文件头判断文件类型
Oct 30 Python
wxPython的安装图文教程(Windows)
Dec 28 Python
python  文件的基本操作 菜中菜功能的实例代码
Jul 17 Python
python2与python3爬虫中get与post对比解析
Sep 18 Python
Python字符串大小写转换拼接删除空白
Sep 19 Python
python numpy之np.random的随机数函数使用介绍
Oct 06 Python
对Pytorch中Tensor的各种池化操作解析
Jan 03 Python
Python实现捕获异常发生的文件和具体行数
Apr 25 Python
PyTorch如何搭建一个简单的网络
Aug 24 Python
python中绕过反爬虫的方法总结
Nov 25 Python
详解使用python爬取抖音app视频(appium可以操控手机)
Jan 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
Extended CHM PHP 语法手册之 DIY
2006/10/09 PHP
zen_cart实现支付前生成订单的方法
2016/05/06 PHP
ThinkPHP5+Layui实现图片上传加预览功能
2018/08/17 PHP
一个对于js this关键字的问题
2007/01/09 Javascript
jQuery 性能优化指南 (1)
2009/05/21 Javascript
jquery+css3实现网页背景花瓣随机飘落特效
2015/08/17 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
JavaScript事件处理的方式(三种)
2016/04/26 Javascript
实用又漂亮的BootstrapValidator表单验证插件
2016/05/30 Javascript
JavaScript页面实时显示当前时间实例代码
2016/10/23 Javascript
jQuery代码实现实时获取时间
2017/01/29 Javascript
Vue resource中的GET与POST请求的实例代码
2017/07/21 Javascript
JS简单实现滑动加载数据的方法示例
2017/10/18 Javascript
Angular实现点击按钮后在上方显示输入内容的方法
2017/12/27 Javascript
Vue2.0 事件的广播与接收(观察者模式)
2018/03/14 Javascript
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
Servlet返回的数据js解析2种方法
2019/12/12 Javascript
vue实现列表拖拽排序的功能
2020/11/02 Javascript
[46:20]TFT vs Secret Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[09:37]2018DOTA2国际邀请赛寻真——不懈追梦的Team Serenity
2018/08/13 DOTA
详细介绍Python的鸭子类型
2016/09/12 Python
通过Python 接口使用OpenCV的方法
2018/04/02 Python
Python 创建空的list,以及append用法讲解
2018/05/04 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
2019/06/27 Python
python打开windows应用程序的实例
2019/06/28 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
Python调用.NET库的方法步骤
2019/12/27 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
利用CSS3实现进度条的两种姿势详解
2017/03/21 HTML / CSS
便利店促销方案
2014/02/20 职场文书
社区母亲节活动记录
2014/03/06 职场文书
数学考试作弊检讨书300字
2015/02/16 职场文书
小区环境卫生倡议书
2015/04/29 职场文书
校园开放日新闻稿
2015/07/17 职场文书