搭建通讯猫类似的TCP服务端

最近需要一个公网的TCP服务端平台来做4G模组的发包测验,通讯猫(http://www.tongxinmao.com/App/Detail/id/1)貌似使用不了,就干脆在自己的腾讯云上搭建了简单的TCP服务端。
我们搭建可以在服务器上使用Python、Java、C#等语言自行编写服务器程序。
目前是使用python脚本实现的,在linux上安装python环境后,防火墙开放相应端口,拷贝下面的程序,运行起来即可,下面代码是使用python2环境运行。客服端是在单片机上实现的代码,服务端即运行下面的代码,连接成功后,客服端发送1024个字节‘a’到服务端,服务端回复10个字节’a’到客服端。

#coding=utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
from socket import *host = ''
port = 8013
numTotal = 0
numError = 0
send_string = 'a' * 10# 创建server socket
server_socket = socket(AF_INET,SOCK_STREAM)# 绑定socket监听地址
server_addr = (host,port)
server_socket.bind(server_addr)# 开始监听,最大允许连接数5
server_socket.listen(5)# 处理连接请求
try:while True:print('waiting for connect...')#阻塞等待客户端的连接 client_socket, client_addr = server_socket.accept()# 连接成功后,打印客户端信息print('a client connnect from:', client_addr)while(True):# 向客户端发送数据# client_socket.send('Hello, client!'.encode())client_socket.send(send_string)# 接收客户端的数据data = client_socket.recv(1024)# 判断是否所有字符都是 'a'all_a = all(char == 'a' for char in data)if all_a != True or len(data) != 1024:numError += 1numTotal +=1        #print("%r" % all_a)print("%r" % len(data))#print('recv data is ', data.decode('gb2312'))#print('recv data is 111', data.encode('gb2312'))# 接收到quit则关闭socketif "quit" in data.decode():break# 关闭socketclient_socket.close()server_socket.close()print("socket closed.")break
except:print('numTotal is ', numTotal-223)print('numError is ', numError-223)client_socket.close()server_socket.close()print("socket closed.")

搭建好服务端后,可以在电脑上使用网络助手来验证功能是否正常:
在这里插入图片描述

如果没有正常中断服务,python程序再次运行,可能会报以下错误
在这里插入图片描述
使用 lsof -i:8013 (相应端口号) 查询哪个占用,再kill掉相应进程,如果不管用,就等待5-10分钟再操作或者重启服务器吧。

参考:https://blog.51cto.com/u_13640625/3028086

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/645467.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

KADB使用PXF连接KES验证

验证环境 KADB版本:Greenplum Database 6.0.0 build dev.V003R002C001B0181.d354cc9215 KES版本:KingbaseES V008R006C007B0012 Java版本:openjdk version "1.8.0_262" PXF部署 以下操作假设KADB和KES已经部署完成并且启动正常…

nomachine下载安装使用教程(远程桌面)

文章目录 参考链接 nomachine 参考链接 [1]【远程桌面】nomachine下载安装使用教程、zerotier下载安装使用教程超详细:https://blog.csdn.net/weixin_44029896/article/details/128555481 [2] 树莓派开发之旅(一)——使用Nomachine进行远…

java动态导入excel按照表头生成数据库表

1、创建接口接收文件 //controller层 PostMapping("/importExcel1")public void importExcel1(HttpServletRequest request, MultipartFile file) {try {waterMeterService.importExcel1(request,file);} catch (Exception e) {throw new RuntimeException(e);}}//se…

selenium执行出现异常,SessionNotCreatedException ChromeDriver only supports

问题现状: 运行程序报错: selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 114 Current browser version is 121.0.6167.85 with binary path /App…

重构改善既有代码的设计-学习(四):简化条件逻辑

1、分解条件表达式(Decompose Conditional) 可以将大块代码分解为多个独立的函数,根据每个小块代码的用途,为分解而得的新函数命名。对于条件逻辑,将每个分支条件分解成新函数还可以带来更多好处:可以突出条…

cartopy绘图特征

文章目录 添加特征add_feature区域截取 添加特征 cartopy中最基础的地图绘制函数是coastlines,即海岸线线条图,这很复合我们的绘图直觉,毕竟陆地和海洋的边缘,是最清晰的地理特征。而在此之上,还可以通过add_feature函…

Java 面试题库

基础篇 面向对象的特征 封装(Encapsulation): 封装是指将对象的数据(属性)和行为(方法)结合在一起,形成一个独立的实体。对象的数据被隐藏在内部,只能通过定义好的接口&…

【嵌入式学习】网络通信基础-项目篇:简单UDP聊天室

源码已在GitHub开源:0clock/LearnEmbed-projects/chat 实现的功能 客户端功能: 上线发送登录的用户名[yes] 发送消息和接收消息[yes] quit退出 服务器端功能: 统计用户上线信息,放入链表中[yes] 接收用户信息并给其他用户发送消…

Windows11 鼠标拖动文件到CMD控制终端窗口无效,无法显示具体文件路径

对于某些用户来说,他们可能会在Windows 11上遇到鼠标拖动文件到CMD控制终端时,无法显示具体文件路径的情况。 系统更新,习惯基础操作无效了,真的有点烦,不会提问就无计可施。 果然善于提问,才有果子吃 问…

架构师之路(十五)计算机网络(网络层协议)

前置知识(了解):计算机基础。 作为架构师,我们所设计的系统很少为单机系统,因此有必要了解计算机和计算机之间是怎么联系的。局域网的集群和混合云的网络有啥区别。系统交互的时候网络会存在什么瓶颈。 ARP协议 地址解…

分类预测 | Matlab实现GRU-Attention-Adaboost基于门控循环单元融合注意力机制的Adaboost数据分类预测/故障识别

分类预测 | Matlab实现GRU-Attention-Adaboost基于门控循环单元融合注意力机制的Adaboost数据分类预测/故障识别 目录 分类预测 | Matlab实现GRU-Attention-Adaboost基于门控循环单元融合注意力机制的Adaboost数据分类预测/故障识别分类效果基本描述程序设计参考资料 分类效果 …

SpringBoot项目多数据源配置与MyBatis拦截器生效问题解析

在日常项目开发中,由于某些原因,一个服务的数据源可能来自不同的库,比如: 对接提供的中间库,需要查询需要的数据同步数据,需要将一个库的数据同步到另一个库,做为同步工具的服务对接第三方系统…

服务器渲染+自定义模块+mysql操作

1.服务器渲染 A.第一步&#xff0c;导入模块库和第三方库 npm init npm --registry https://registry.npmmirror.com install art-template moment B.第二步&#xff0c;调整html文件 <!DOCTYPE html> <html lang"en"><head><meta charset…

K8s-应用管理(环境变量,Job)

容器传参 构建一个测试镜像 FROM ubuntu CMD ["sleep"&#xff0c;"5"]运行这个容器发现睡眠了5秒以后退出&#xff0c;如果我们希望自己指定可以直接在docker后面加命令覆盖&#xff0c;写法如下 docker run sleeper sleep 10上面的过程显得有些不合理…

Redis面试

1.说说什么事redis Redis是一种基于键值对的NoSql数据库。 Redis中的value支持string&#xff08;字符串&#xff09;、hahs&#xff08;哈希&#xff09;、list、set、zset&#xff08;有序集合&#xff09;、bitmaps&#xff08;位图&#xff09;&#xff0c;HyperLoglog等数…

ACwing算法基础入门代码合集

ACwing算法基础入门代码合集 快速排序 786.第k个数 //第k个数 //算法思想&#xff1a;基于快速排序&#xff08;分治&#xff09; #include<iostream> using namespace std; #define N 100010 int Partition(int a[], int low, int high); int quicksort(int a[], int…

Java基础数据结构之排序

一.排序 1.什么是稳定性 假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff0c;若经过排序&#xff0c;这些记录的相对次序保持 不变&#xff0c;即在原序列中&#xff0c; r[i]r[j] &#xff0c;且 r[i] 在 r[j] 之前&#xff0c;而在排序后的序…

php 文件上传

目录 1 php.ini 配置文件的修改 2.系统返回码详解 错误级别 4.上传简单示例 5.php代码简单优化 1 php.ini 配置文件的修改 配置项说明file_uploads on 为 开启文件上传功能&#xff0c; off 为关闭 post_max_size 系统允许的 POST 传参的最大值 &#xff0c;默认 8M upl…

【JSON2WEB】03 go的模板包html/template的使用

Go text/template 是 Go 语言标准库中的一个模板引擎&#xff0c;用于生成文本输出。它使用类似于 HTML 的模板语言&#xff0c;可以将数据和模板结合起来&#xff0c;生成最终的文本输出。 Go html/template包实现了数据驱动的模板&#xff0c;用于生成可防止代码注入的安全的…

电信宽带配置动态域名和端口映射

需求: 家宽映射动态域名访问内网服务 动态域名:18081>电信光猫:18081>Openwrt软路由:18081>主机192.168.3.172:8081 目前网络结构&#xff1a; 电信光猫192.168.1.1 Openwrt软路由192.168.3.1 主机192.168.3.172上8081端口起了一个nginx-docker服务 前置条件&#x…