用Python写的一个多线程TCP通信实例
来源:互联网 发布:js字符串 函数传对象 编辑:程序博客网 时间:2024/06/05 03:13
用Python写的一个多线程TCP通信实例,实现了JSON数据的传输。闲言少述,直接上代码一、客户端#!/usr/bin/env python# -*- coding:utf-8 -*-#import socketimport threadingimport SocketServerimport jsondef client(ip, port, message): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((ip, port)) try: print "Send: {}".format(message) sock.sendall(message) response = sock.recv(1024) jresp = json.loads(response) print "Recv: ",jresp finally: sock.close()if __name__ == "__main__": # Port 0 means to select an arbitrary unused port HOST, PORT = "localhost", 50001 msg1 = [{'src':"zj", 'dst':"zjdst"}] msg2 = [{'src':"ln", 'dst':"lndst"}] msg3 = [{'src':"xj", 'dst':"xjdst"}] jmsg1 = json.dumps(msg1) jmsg2 = json.dumps(msg2) jmsg3 = json.dumps(msg3) client(HOST, PORT, jmsg1) client(HOST, PORT, jmsg2) client(HOST, PORT, jmsg3)二、服务端#!/usr/bin/env python# -*- coding:utf-8 -*-#import socketimport threadingimport SocketServerimport json, types,stringimport os, time class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler): def handle(self): data = self.request.recv(1024) jdata = json.loads(data) print "Receive data from '%r'"% (data) print "Receive jdata from '%r'"% (jdata) rec_src = jdata[0]['src'] rec_dst = jdata[0]['dst'] cur_thread = threading.current_thread() response = [{'thread':cur_thread.name,'src':rec_src,'dst':rec_dst}] jresp = json.dumps(response) self.request.sendall(jresp) rec_cmd = "proccess "+rec_src+" -o "+rec_dst print "CMD '%r'" % (rec_cmd) os.system(rec_cmd) class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer): passif __name__ == "__main__": # Port 0 means to select an arbitrary unused port HOST, PORT = "localhost", 50001 SocketServer.TCPServer.allow_reuse_address = True server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler) ip, port = server.server_address # Start a thread with the server -- that thread will then start one # more thread for each request server_thread = threading.Thread(target=server.serve_forever) # Exit the server thread when the main thread terminates server_thread.daemon = True server_thread.start() print "Server loop running in thread:", server_thread.name print " .... waiting for connection" # Activate the server; this will keep running until you # interrupt the program with Ctrl-C server.serve_forever()
0 0
- 用Python写的一个多线程TCP通信实例
- 用python写的一个多线程的端口扫描
- java的用tcp协议写的一个通信的例子
- 多线程及TCP通信 实例之 聊天室
- Python多线程写文件实例
- Python多线程写文件实例
- python的tcp通信
- 简单的TCP通信实例
- 用PYTHON第一次写的SOCKET通信
- python的多线程实例
- Linux环境下用TCP协议写的通信
- 用python写的多线程网页爬虫
- python的socket通信实例
- Java_SE10-多线程,TCP通信
- 多线程基础 、 TCP通信
- 多线程-TCP通信
- 多线程TCP通信
- 如何写一个完美的socket多线程通信程序 ?(持续更新中...)
- Spring实战读书笔记 第二章 装配Bean
- php高级程序设计3
- Java web 项目关于错误页面的处理
- 特种浓缩分离:上海市弧形阳极电泳工艺简要
- 百度工具问题百度站长工具中的抓取异常准确吗?
- 用Python写的一个多线程TCP通信实例
- python 调用加密函数dll
- iOS安全攻防(七)使用iOSOpenDev开发SpringBoard的Tweat
- 理解Javascript_02_理解undefined和null
- Spring实战读书笔记 第三章 最小化 Spring XML配置
- 对于android出现异常而崩溃(第二片篇)
- leetcode3 Longest substring whitout repeat characters
- matlab 提示内存不足
- MongoDB-安装和配置