socket通讯在本地上可以建立连接,在不同的主机上无法建立连接

项目场景:

对机械臂设备进行联网的开发,创建socket通讯,传输数据到数据库


问题描述

在本地上可以建立通讯,但是在不同的主机上无法建立连接

#main.py
from TCPserver import TCPRobotServer
import queue
import asyncio
# import MySQL_Pool

#
# async def process_data(q):
#     values = q.get()
#     columns = 'robot_name,workorder_number,tool_number,cycle_target,cycle_completed'
#     query = f'INSERT INTO milwaukeerellab.robot ({columns}) VALUES ({values}) '
#     client = MySQL_Pool.Pool.get_connection()
#     client.cursor.execute(query)
#     client.close()
#     q.task_done()

# 创建一个队列
q = queue.Queue()
# 使用示例
robot_server = TCPRobotServer('0.0.0.0', 9000)
robot_server.start()
while True:
    client_socket, address = robot_server.server_socket.accept()
    client_socket.settimeout(1000)
    with client_socket:
        data = client_socket.recv(1024).decode('utf-8')
        if data:
            q.put(data)
        else:
            pass

原因分析:

一般来说如果在本地上能建立连接,程序基本没有问题,因此排查原因后发现防火墙的问题


解决方案:

由于公司IT策略原因,无法直接关闭防火墙,因此用添加防火墙规则来解决问题

  1. 在setting中搜索 Allowed appsAllowed apps
  2. 点击Allow another app …Allow another app ...
  3. 点击 Browse ,添加软件所在的路径即可path
  4. 如果是和我一样使用python开发的,添加python解释器的路径即可python虚拟环境
  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值