• [流程编排] Socket连接错误,请检查协议配置,ip端口是否配置正确,网络是否异常
    【功能模块】Socket连接错误,请检查协议配置,ip端口是否配置正确,网络是否异常【操作步骤&问题现象】1、2、脚本那一块【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] NB-IOT入网后 创建socket发送1234 网络状态一直在变
    【功能模块】使用AT指令创建socket连接,发送1234发送了10次左右 只有1条收到,网络状态很奇怪使用AT+CERGE?调试发现期间NB网络注册状态很奇怪【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [技术干货] [执行器2.17]socket.gaierror: [Errno 11001] getaddrinfo failed报错
    在执行脚本的时候遇到此报错。socket.gaierror: [Errno 11001] getaddrinfo failed通过百度可以看到是增加了一些符号如换行符或者空格导致,可以检查脚本传进来的参数是否是合法的。此问题就是网络不通导致的,收发邮件等都会遇到。[2021-11-23 15:19:00,395] [INFO] - com.huawei.antrobot.logging.log_output.log_output(log_output_start_end:111) - start running action: smtp.sendEmail line:17 [email-发送查看邮件提醒] in xingchengka.xml[2021-11-23 15:19:00,964] [WARNING] - com.huawei.antrobot.framework.security_check.digital_certificate_checker.digital_certificate_checker(inner:60) - There are no uploaded certificates in the certificate library directory[2021-11-23 15:19:00,972] [ERROR] - com.huawei.antrobot.dispatch.dispatcher.dispatcher(logout_traceback:130) - Traceback (most recent call last):  File "..com.huawei.antrobot.framework.failure.failure_deal.py", line 100, in inner  File "..com.huawei.antrobot.framework.security_check.allow_list_utils.py", line 223, in inner  File "..com.huawei.antrobot.dispatch.dispatcher.py", line 92, in run  File "..com.huawei.antrobot.drivers.common_driver.py", line 55, in run_action  File "..com.huawei.antrobot.actions.common.base.py", line 64, in order  File "..com.huawei.antrobot.actions.common.base.py", line 109, in run  File "..com.huawei.antrobot.framework.security_check.digital_certificate_checker.py", line 63, in inner  File "..com.huawei.antrobot.framework.security_check.information_limit.py", line 109, in inner  File "..com.huawei.antrobot.actions.wa-mail******mail******mail****** in sendemail  File "..com.huawei.antrobot.actions.wa-mail******mail******mail****** in start_send  File "..com.huawei.antrobot.actions.wa-mail******mail******mail****** in protocol_auth  File "..com.huawei.antrobot.actions.wa-mail******mail******mail****** in get_smtp_obj  File "..com.huawei.antrobot.actions.wa-mail******mail******mail****** in smtp  File "smtplib.py", line 253, in __init__  File "smtplib.py", line 339, in connect  File "smtplib.py", line 308, in _get_socket  File "socket.py", line 787, in create_connection  File "socket.py", line 918, in getaddrinfosocket.gaierror: [Errno 11001] getaddrinfo failed解决方法:检查邮件收发的地址,比如 pop.qq.com  / 10.22.88.33 这些本不应该出现空格的地方出现了空格或者不容易被察觉的换行符等,排查后基本都能解决。
  • [传感器适配] 【VLP-16】【数据透传】在哪个地方接收socket转发的激光雷达裸数据?
    【功能模块】目前MDC版本使用的是105-T,不支持使用的vlp-16激光雷达。我们想通过数据透传功能接收激光雷达数据。【操作步骤&问题现象】1、修改好激光雷达的TP地址和端口,接入2以太网口,登录mdc后可以ping通。2、按照《快速入门指南》中配置激光雷达透传通路,修改了“sensor_lidar_data_dispense_cfg.json”文件。但不知道如何接收激光雷达裸数据,以及解析代码存放位置。【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [MindX SDK] 【MindX SDK】【rtsp取流解析】取流开始几分钟后socket关闭从而码流中断。
    【功能模块】rtsp【操作步骤&问题现象】1、组网如下,分析服务器(硬件:atlas800 3010 atlas300I)向 IVS1800取流做视频分析2、从IVS1800 rtsp拉流取流成功,但等待若干分钟后会出现码流中断,经过1800开发分析,是由于 Atlas800分析服务器在向IVS1800 的RTSP取流过程中频繁向IVS1800发送OPTIONS restful信令,atlas插件侧主动关闭了socket,然后码流就中断了。IVS1800认为频繁发送options 不符合RTSP流程,可能会引起两边交互不同步。 3、Atlas分析服务直接从摄像机取rtsp实时流做分析时没有出现中断现象。 【截图信息】https://onebox.huawei.com/p/92d16957d4c9082448da5e84e93fb383抓包截图打包:options.rar【日志信息】(可选,上传日志内容或者附件)https://onebox.huawei.com/p/92d16957d4c9082448da5e84e93fb383MindX SDK插件日志: 1118-1.log.zip  插件名称:Rtspsrc分析服务器抓包wireshark:145.rar分析服务器地址:184.1.5.145IVS1800:192.168.0.111取流开始时间 UTC+7 15:40左右, 码流中断时间 15:47 左右(中断码流对应相机地址是192.168.0.119)项目信息: 泰国AOT机场违停项目
  • [设备专区] 【msdk】【tcp socket】尾端不能使用in6addr_any参数
    【功能模块】【msdk】【tcp socket】MSDK-COMMON_V200R020C10SPC100,b265版本【操作步骤&问题现象】1、我在尾端搞了两个任务,一个任务实现tcp socket server,一个tcp socket client,如果使用尾端外部呈现的Ip,该问题中使用的ipv6是"fc00::2a4:1ff:fe15:7031",server是可以接收到数据的,client也可以连接到server, 但是换成in6addr_any参数,就不能使用了,我这边的需求是尾端是服务端,所以尾端要有一个通配地址的。2、在问题1的基础上,尾端使用"fc00::2a4:1ff:fe15:7031",核心板上容器内客户端连接还是被拒绝,怎么回事?【截图信息】【日志信息】(可选,上传日志内容或者附件)无
  • [设备专区] 【arcore】【tcp】实现tcp socket是不是还要设置什么?
    【功能模块】arcore 265版本【操作步骤&问题现象】1,使用的是自己编译的容器,其它程序都能正常运行;2,再此基础上,之前是没有的,现在要实现一个tcp socket,核心板作为tcp socket 客户端,尾端作为tcp socket 服务端,目前出现一个问题,客户端连接总是被拒绝,但是目前不论客户端还是服务器的函数都是执行成功的,端口也是使用相同的;3,同样的环境,实现了一个udp socket,核心板作为udp socket服务器,尾端作为udp socket客户端,两边就能正常收发。怎么回事,还是需要什么参数吗?【截图信息】无【日志信息】(可选,上传日志内容或者附件)无
  • [维护宝典] 如何根据strace信息定位异常连接的客户端
    问题背景描述:某局点某Kafka节点文件句柄数很高,导致此节点上Kafka的请求失败,lsof -p kafkapid发现Kafka进程有大量socket泄漏,如下图所示:问题分析步骤:1. 执行ls -l /proc/kafkapid/fd >> fd.txt命令查看Kafka进程的文件描述符2. 执行trace -T -tt -f -F output.txt -p kafkapid命令打出kafka进程的调用信息3. 几分钟后再次执行执行ls -l /proc/kafkapid/fd >> fd1.txt命令查看Kafka进程的文件描述符4. 对比1和3步骤中的文件描述符,查找增加的socket连接,多查找几个增加socket连接,根据socket对应的id号从2步骤中获取的信息中查看对应的id连接调用信息5. 如果查找socket连接对应的客户端,可以通过accept查找,如下图所示此查询查询到对应的socketfd对应的所有的客户端连接,多次查找后可对比客户端连接来进一步确认客户端的范围。6. 通过accept查找的原因是socket通信中accept函数获取客户端的连接:int accept(int sockfd,struct sockaddr * addr,socklen_t * addrlen);sockfd的参数为listen()函数返回的监听套接字;addr是一个传出参数,表示客户端的地址,该参数设置为NULL时,表示不关心客户端的地址。addrlen为一个传入传出参数,传入时为函数调用时提供参数addr的长度,传出时为客户端地址结构体的实际长度;accept的返回值也是一个套接字,该套接字用于与本次通信的客户端进行数据交互。
  • [互动交流] Appcube里有socket通讯吗
    AppCube里支持socket通讯吗?或者是后续会上线这样的功能吗?
  • [传感器适配] socket直连激光雷达获取激光雷达裸数据
    【功能模块】【操作步骤&问题现象】1、想通过socket直连激光雷达获取激光雷达裸数据,请问有这方面相关的demo吗?2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] 百度抓取socket 读写错误,如何解决
    服务器错误:爬虫发起抓取,httpcode返回码是5XX访问被拒绝:爬虫发起抓取,httpcode返回码是403找不到页面:爬虫发起抓取,httpcode返回码是404其他错误:爬虫发起抓取,httpcode返回码是4XX,不包括403和404
  • [技术干货] python网络编程 - socket
    1,socket通信2,socket对象的参数socket families:网络层    socket.AF_INET# IPV4    socket.AF_INET6# IPV6    socket.AF_UNIX # unix本机进程间通信 socket types:传输层    socket.SOCK_STREAM #TCP    socket.SOCK_DGRAM #UDP        socket.SOCK_RAW  #原始套接字,可以伪造IP头    socket.SOCK_RDM #UDP,保证传到,但不保证顺序 3,黏包场景:单次接收设置1024,但是实际数据大于1024,多于1024的内容会再下次接收到服务器连续两次send,可能会被放进缓冲区形成黏包 解决方法:计算发送内容大小,先把大小发送给接收方,发送完大小后服务器必须加阻塞确认,防止黏包拿到内容大小后,后续如果还有多次send多问题,就可以改用精确接收内容大小防止黏包了,无需每次阻塞确认特别注意中文str长度1,变成bytes后长度是3 4,模拟SSH服务器端:import socketimport osserver = socket.socket()server.bind(('localhost', 19999))  # 绑定端口server.listen(3)  # 监听端口,这里不是并发while True:    conn, addr = server.accept()  # 等待连接,进入阻塞状态    while True:        cmd = conn.recv(1024)  # 接收大小是1024        if not cmd:  # linux会陷入recv死循环,建议都加上防止反复接收死循环            break        cmd = cmd.decode()        cmd_res = os.popen(cmd).read().encode()         cmd_lens = len(cmd_res)        conn.send(str(cmd_lens).encode())        client_ack = conn.recv(1024)   # 加个确认防止黏包        conn.send(cmd_res)          # server.close()  # 这里如果加close,server不会立即关闭,会在当前client结束后再关客户端:import socket client = socket.socket()client.connect(('localhost', 19999))while True:    msg = input('>>: ').strip()    if not msg:        continue    elif msg == 'exit':  # 退出循环,关闭连接        break     client.send(msg.encode())  # 只能send bytes,默认utf-8    cmd_res_size = client.recv(1024)    cmd_res_size = int(cmd_res_size.decode())  # bytes -> str -> int    client.send(b'ack')  # 发送确认,解决长度与实际data之间的黏包问题     received_size = 0    received_data = b''    while received_size < cmd_res_size:        data = client.recv(1024)        received_size += len(data)        received_data += data     print(received_data.decode()) client.close()5,socket接收文件流程:读取文件名,检测文件是否存在,打开文件,检测文件大小,发送文件大小给客户端,等待客户端确认,边读边发,发送MD5服务器端:import socketimport osimport hashlib server = socket.socket()server.bind(('localhost', 19999))server.listen() while True:    conn, addr = server.accept()    while True:        data = conn.recv(1024)        if not data:            break        cmd, filename = data.decode().split()        if os.path.isfile(filename):            f = open(filename, 'rb')  # 'rb'打开,后面不用encode了            file_size = os.stat(filename).st_size            conn.send(str(file_size).encode())  # 发送文件大小            conn.recv(1024)  # 等待确认            m = hashlib.md5()            for line in f:   # 发送文件,f是迭代器                m.update(line)  # 逐行更新计算MD5                conn.send(line)            f.close()            conn.send(m.hexdigest().encode())  # 将MD5发送给客户端客户端:使用get + 文件名,获取文件import socketimport hashlib client = socket.socket()client.connect(('localhost', 19999)) while True:    cmd = input('>>: ').strip()    if not cmd:        continue    elif cmd == 'break':        break    elif cmd.startswith('get'):        client.send(cmd.encode())  # 只能send bytes,默认utf-8        file_size = client.recv(1024)        file_size = int(file_size.decode())  # bytes -> str -> int        client.send(b'ack')  # 发送确认,解决长度与实际data之间的黏包问题         received_size = 0        file_name = cmd.split()[1]        m = hashlib.md5()         f = open(file_name + '.new', 'wb')        while received_size < file_size:            size = 1024            if file_size - received_size > 1024:                buff = file_size - received_size  # 最后一次收实际数据,防止黏包把服务器MD5写入文件            data = client.recv(size)            received_size += len(data)            m.update(data)            f.write(data)        f.close()         client_file_md5 = m.hexdigest()        server_file_md5 = client.recv(1024).decode()         print('客户端文件MD5:', client_file_md5)        print('服务器端文件MD5:', server_file_md5) client.close()对socket进行二次封装,简化了socket服务器端编写,实现服务器端并发socketserver实现模拟SSH服务器端(客户端不变):class TCPHandler(socketserver.BaseRequestHandler):     def handle(self):        while True:  # 不写while True,每个连接只能处理一次命令            cmd = self.request.recv(1024)            if not cmd:  # cmd为空代表客户端断开了,不做非空判断客户端断开时可能会无限循环                break            cmd = cmd.decode()            cmd_res = os.popen(cmd).read().encode()            cmd_lens = len(cmd_res)            self.request.send(str(cmd_lens).encode())            self.request.recv(1024)            self.request.send(cmd_res)  if __name__ == '__main__':    server = socketserver.TCPServer(('localhost', 9999), TCPHandler)    server.serve_forever() 将TCPServer改成ThreadingTCPServer可以实现多并发
  • [应用开发] 【MDC300产品】【直接使用socket功能】使用socket接收T-BOX传来的裸数据
    我们想直接使用socket来接收T-BOX传来的裸数据,有没有demo?
  • [问题求助] LOT平台支持socket连接吗?
    设备使用GPRS模块,进行网络通讯,GPRS模块后面接入的是Modbus协议的,设备端不支持编程
  • [技术干货] Linux下实现高并发socket最大连接数的配置方法
    【诉求场景】Linux操作系统,无论是编写客户端程序还是服务端程序,在高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。本文档主要是对文件数量并发限制做修改。【配置方法】1、修改用户进程可打开文件数限制,如图1所示:                          图 1说明:ulimit –n :查看当前系统允许当前用户进程打开的文件数限制。默认为1024:表示当前用户的每个进程最多允许同时打开1024个文件。这1024个文件中还得去除每个进程打开的标准输入、标准输出、标准错误、服务器监听socket等等,剩下的可用于客户端socket连接的文件数就只有1024-10=1014个左右,也就是基于Linux的程序最多允许同时1014个TCP并发连接。 (1)修改Linux系统对用户打开软限制和硬限制,如图2所示:vim /etc/security/limits.conf添加 root soft nofile 1921root hard nofile 1921                       图 2说明:root代表修改了root用户打开文件的数的限制,可以用“*”代表所有用户soft和hard指定要修改的软限制还是硬限制。1921指定修改的新限制值,也就是最大打开的文件数(软限制一定要小于或等于硬限制)(2)修改 /etc/pam.d/login文件,如图3所示:添加:session required /lib/security/pam_limits.so                                                 图 3说明:Linux在用户登录系统后应该调用pam_limits.so模块来设置系统对该用户可使用的各种资源数量的最大限制(包括用户可打开的最大文件数限制),pam_limits.so模块就会从/etc/security/limits.conf文件中来读取这个这些限制值(3)查看linux系统级最大打开文件数限制cat /proc/sys/fs/file-max,如图4所示:                                      图 4说明:这表示linux系统最多同时允许打开(包括所有用户打开文件数的总和)96854个文件,是linux系统级的硬限制,所有用户打开的文件数都不得超过这个数值, 一般不修改这个值,如果想修改,命令为vim /etc/rc.local。(4)添加:echo 数值 > /proc/sys/fs/file-max,修改完重启系统,重启后执行ulimit –n查看一下,如图5所示:                     图 5(5)如果重启后执行ulimit –n查看的值还是小于上面修改后的最大值,可能是用户登录脚本/etc/profile中使用ulimit –n命令,已将用户同时打开的文件数做了限制,只能在/etc/profile找到ulimit –n限制用户同时打开的最大文件数,可以删除也可以修改值,重启系统即可。(6)上面操作可以解决高并发TCP连接处理打开文件数量的系统限制。有时尽管解开了系统对用户同时打开文件数的限制,但仍会出现并发TCP连接数增加到一定数量时,再也无法创建新的TCP连接的现象。 2、linux网络内核对本地端口号范围有限制,例如当前系统内核限制本地端口号的范围为 1024-32768,当系统同一时间存在大量的TCP客户端连接时,由于每个TCP客户端都要占据一个唯一的本地端口号,如果TCP端口号的范围不够用,就会提示 :can't assign requested address ,这就是由于内核编译时默认设置的本地端口号范围太小。修改:/etc/sysctl.conf添加:net.ipv4.ip_local_port_range = 1024 65535(最大值要小于或等于65535)执行:sysctl –p,如果没有报错,说明设置成功,显示内容包含图6中的内容:                                         图 6以上是单独一个进程最大同时可以打开63000多个TCP客户端连接的设置。 
总条数:24 到第
上滑加载中