执行力才是最重要的。
python书籍也看了几个有好几个礼拜了,但是一直没上手应用,始终想着学的太浅,理解的透彻点再开始用,一直拖了好久。但是最近的一个项目某个查询模板,由于涉及到单机网络的原因,我就想到了开始写一段python处理程序,这样可以利用socket连接多多台服务器并发进行查询,而服务器端监听请求处理查询即可。在写的过程中,遇到各种问题,再去查询,边写边学,效率高多了,执行下去才是最重要的,先直接上干货
客户端client.py:
def run(self): global query_lock,query_list,server_list,server_pos,server_max while True: if query_lock.acquire(): try: query = query_list.pop(0) #轮询服务器 ip,port = server_list[server_pos] server_pos = server_pos + 1 if server_pos == server_max: server_pos = 0 except IndexError: query_lock.release() break; query_lock.release() sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) sock.connect((ip,port)) sock.send(query) res = sock.recv(1024) sock.close() print res.replace('\n','')
服务器端server.py:
path_dir = sys.path[0] sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) sock.bind((socket.gethostbyname(socket.gethostname()),9710)) sock.listen(10) while True: connection,address = sock.accept() try: connection.settimeout(60) line = connection.recv(1024) arrs = line.split() if len(arrs) == 2: table = arrs[0] url = arrs[1] cmd = "sh " + path_dir + "/seek_hst.sh " + table + " " + url sub_p = subprocess.Popen(cmd,shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT); result = ""; buff = ""; while True: buff = sub_p.stdout.readline(); result += buff; if buff == '': break; result = result.replace('\n',''); connection.send(result); else: connection.send('please go out!') except socket.timeout: print 'time out' connection.close()
这是目前的简略版,写起来后各种不同的想法涌现出来,目前想到可以改进的地方:
1. client端连接服务器及端口的配置动态化
2. 可控的超时控制,进一步设计在socket连接上构建自己的协议包内容
3. 服务器端的多线程处理,select及epoll方式的异步IO
相关推荐
python多线程编程,适合进阶型学习者,实现多线程下的编程。
Python中实现socket通信的服务端比较复杂,而客户端非常简单,所以客户端基本上都是用sockct模块...desc:socket编程客户端,python3.6.2 ''' import socket,sys HOST = '192.168.1.6' PORT = 8998 ADDR =(HOST,PORT)
python实现的socket编程,能够实现多人聊天 客户端和服务器的界面都是命令行 主要运用知识有:1.socket2多线程
1、python socket编程介绍 2、利用python socket处理多个连接 3、利用python socket 模拟SSH协议1 4、利用python socket模拟SSH协议2 5、python socketServer多线程 6、利用python socketServer多线程开发FTP软件
6. 多线程编程:介绍Python的多线程编程、线程的创建、同步、锁等知识。 7. Web开发:介绍Python的Web开发、Django框架、MVC模式、ORM等知识。 8. 数据库操作:介绍Python的数据库操作、MySQL、MongoDB等数据库的...
主要为大家详细介绍了Python Socket编程之多线程聊天室,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
python高级编程源码包含面向对象 socket 三大器 多线程 多进程 协程
该课程从Python从零基础开始学习,包含了详细的Python基础,Python语法,基础逻辑算法,爬虫技术,和Django框架。也涵盖了Linux操作系统的学习,数据库Mysql和MangoDB。并涉及到数据分析和机器算法。
Python实现的多人聊天室源码,基于socket tcp通信,使用tkinter做客户端界面;一个多人同时在线的聊天系统;
从Python基础课程,PYTHON0递归 函数 生成器,面向对象,MySQL数据库,PYTHON多线程,socket 编程 多线程,正则表达式基础,MONGODB,以及Python web的全系列课程。在后续的高级课程中对Django框架、tornado框架等也...
python 多线程,网络编程,服务器端代码。
从Python基础课程,PYTHON0递归 函数 生成器,面向对象,MySQL数据库,PYTHON多线程,socket 编程 多线程,正则表达式基础,MONGODB,以及Python web的全系列课程。在后续的高级课程中对Django框架、tornado框架等也...
《Python网络编程基础》全面介绍了使用Python语言进行网络编程的基础知识,主要内容包括网络基础知识、高级网络操作、Web Services、解析HTML和XHTML、XML、E-服务、FTP、使用Python操作数据库、SSL、几种服务器端...
从Python基础课程,PYTHON0递归 函数 生成器,面向对象,MySQL数据库,PYTHON多线程,socket 编程 多线程,正则表达式基础,MONGODB,以及Python web的全系列课程。在后续的高级课程中对Django框架、tornado框架等也...
今天老师上课说的内容,使用多线程+socket写一个端口扫描器 写的些许潦草,也没注释,不过问题不大,应该都能看懂 多线程+queue真的nice!! import socket import threading import time import queue import sys ...
Python 基础 之 python 线程知识点整理,并实现一个简单多线程 udp 聊天应用 目录 Python 基础 之 python 线程知识点整理,并实现一个简单多线程 udp 聊天应用 一、简单介绍 二、能学到 三、实现思路 四、效果...
本文实例为大家分享了python多线程同时接受和发的具体代码,供大家参考,具体内容如下 ''' 模仿qq 同时可以发送信息和接受信息多线程 ''' from socket import * from time import sleep import threading # 负责...
本文实例讲述了python socket多线程通讯方法。分享给大家供大家参考,具体如下: #!/usr/bin/evn python """ 这是一个Socket+多进程的例子(聊天服务端) """ import socket import threading # 处理中文数据用的 ...