当前位置 博文首页 > ChenYX的博客:云上python:【四】服务器搭建简易TCP SERVER

    ChenYX的博客:云上python:【四】服务器搭建简易TCP SERVER

    作者:[db:作者] 时间:2021-07-07 18:46

    一、控制台开放连接端口?

    在连接阿里云服务器端口前需要先在防火墙设置?,避免防火墙阻止请求。

    我们登录阿里云,打开服务器控制台,选择防火墙:

    在防火墙界面设置添加规则,前三个是服务器默认的开放连接的端口,这里我增加一个TCP连接的5200端口,用来进行数据传输:

    到这里,轻量应用服务器的配置就OK了。ECS的话则还需要将当前规则添加到安全组中再重启才能生效,这里不赘述。

    二、在服务器上部署TCP服务端代码

    这里我们使用基于python编写的一个简单demo进行测试(参考资料):

    # 导入套接字模块
    import socket
    # 导入线程模块
    import threading
    # 导入时间
    import time
    
    
    # 定义个函数,使其专门重复处理客户的请求数据(也就是重复接受一个用户的消息并且重复回答,直到用户选择下线)
    def dispose_client_request(tcp_client_1, tcp_client_address):
        # 5 循环接收和发送数据
        while True:
            recv_data = tcp_client_1.recv(4096)
            
            # 6 有消息就回复数据,消息长度为0就是说明客户端下线了
            if recv_data:
                print("客户端是:", tcp_client_address)
                print("客户端发来的消息是:", recv_data.decode("GB2312"))
                send_data = time.strftime("%H:%M:%S ") + "消息已收到,正在处理中..."
                tcp_client_1.send(send_data.encode("GB2312"))
            else:
                print("%s 客户端下线了..." % tcp_client_address[1])
                tcp_client_1.close()
                break
    
    
    if __name__ == '__main__':
        
        # 1 创建服务端套接字对象
        tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        
        # 设置端口复用,使程序退出后端口马上释放
        tcp_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
        
        # 2 绑定端口
        tcp_server.bind(("", 5200))
        
        # 3 设置监听
        tcp_server.listen(128)
        
        # 4 循环等待客户端连接请求(也就是最多可以同时有128个用户连接到服务器进行通信)
        while True:
            tcp_client_1, tcp_client_address = tcp_server.accept()
            # 创建多线程对象
            thd = threading.Thread(target=dispose_client_request, args=(tcp_client_1, tcp_client_address))
            
            # 设置守护主线程  即如果主线程结束了 那子线程中也都销毁了  防止主线程无法退出
            # thd.setDaemon(True)
            
            # 启动子线程对象
            thd.start()
        
        # 7 关闭服务器套接字 (其实可以不用关闭,因为服务器一直都需要运行)
        # tcp_server.close()
    

    ?我们命名为TCP.py,用winscp上传到服务器运行进行测试:

    利用putty或者xshell命令行运行(我换成了xshell因为连接保活和保存登陆密码比较方便):

    三、TCP链接测试

    这里我使用有人的4G DTU模块进行远程TCP连接,这也是为了以后的毕设的识别上传做准备:

    我们在配置上位机填入我们服务器的公网ip和防火墙运行的端口,选择设置所有参数,待写入完成后重启。

    然后,我们点击进入通讯模式,输入hello并发送,查看结果(注意服务器端demo要运行):

    到这里,我们的TCP服务端就算正式建立了。


    本文参考资料:

    https://blog.csdn.net/wangtaotao_/article/details/97175108


    如有疑问或错误,欢迎和我私信交流指正。
    W.By ChenYX,未经授权,请勿转载!

    over~

    cs
    下一篇:没有了