搭建通讯猫类似的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 += 1
            numTotal +=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则关闭socket
            if "quit" in data.decode():
                break
        
        # 关闭socket
        client_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.")

搭建好服务端后,可以在电脑上使用网络助手来验证功能是否正常:
搭建通讯猫类似的TCP服务端_第1张图片

如果没有正常中断服务,python程序再次运行,可能会报以下错误
搭建通讯猫类似的TCP服务端_第2张图片
使用 lsof -i:8013 (相应端口号) 查询哪个占用,再kill掉相应进程,如果不管用,就等待5-10分钟再操作或者重启服务器吧。

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

你可能感兴趣的:(tcp/ip,网络,服务器)