Python 自动化测试工具开发1:开发TCP Server工具

前言

近日,有客户提出一个问题,新版本的固件调用socket send接口发送数据给TCP Server,然后立刻调用recv接口接收TCP服务器返回的数据,时间差较上个版本增大500ms,但是客户没法提供调试环境,代码之前也是其他同事负责的,于是思考使用python开发一个TCP Server先复现问题。本文将带领大家开发一个TCP Server自动化测试工具,TCP服务器收到Client发来的数据后立刻返回给该客户端。

一、基础知识

1.python网络编程简介

Python 提供了两个级别访问的网络服务。

1.1 低级别

低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法。

1.2 高级别

高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。

2.TCP Server实现方式

理论上,使用低级别的网络服务和高级别的网络服务都可以实现此功能,低级别网络服务主要使用socket接口,开发TCP Server时候需要和多线程结合起来才能实现,主要示例代码如下,每次有新的客户端接入都需要创建一个线程处理。

import socket 
import threading

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('127.0.0.1', 9998))
s.listen(3)

# 处理函数
def link(conn, addr):
 data = conn.recv(1024).decode('utf-8')
 conn.sendall(data.encode('utf-8'))
 conn.close()

while True:
 conn, addr = s.accept()

 # 每次新开一个线程,处理客户端的请求
 t = threading.Thread(target=link, args=(conn, addr))
 t.start()

本文使用python的高级别的网络服务模块 SocketServer,具体实现参见下文。

二、使用实例

1.程序分析

# encoding= utf-8
import os
import socketserver

# tcp server 
class MyTcpServer(socketserver.BaseRequestHandler):
    def handle(self):
        while True:
            data = self.request.recv(1024).strip()
            print ("##################receive from (%r):%r" % (self.client_address, data))
            self.request.send( data )
            
host = ("192.168.1.6", 8089)
tcp_s = socketserver.ThreadingTCPServer(host, MyTcpServer)
tcp_s.serve_forever()

三、下载运行

运行python程序:

输入python3 run.py运行python程序,注意程序中IP地址修改为电脑的IP地址。

网络助手启动两个TCP客户端:
client_start
运行现象:

客户端分别向Python启动的TCP 服务端发送数据,会立刻收到服务器返回信息,网络助手信息如下:
client_runig
python控制台运行信息如下:
python_runing

四、结语

1.总结:

本节完,实际操作过程中需要注意的地方有如下几点:

(1) python版本

本文使用python3.6.0

(2) IP地址配置

IP地址选择电脑的IP地址,通过CMD控制台ipconfig查看获取,我这边是192.168.1.6。

2.后记:

如您在使用过程中有任何问题,请加QQ群进一步交流,也可以github提Issue。

QQ交流群:906015840 (备注:物联网项目交流)

github仓库地址:https://github.com/solitary-sand/python

一叶孤沙出品:一沙一世界,一叶一菩提

在这里插入图片描述

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值