关于二次开发“Error: tcpip::Socket::recvAndCheck @ recv: peer shutdown“这类报错问题原理解释

二次开发,一般来讲就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能和效果,一般来说都不会改变原有系统的内核。一般来讲,不管软件是否开源,都会设置接口以供用户和开发人员进行使用,以在原有软件的基本功能上进行调用和改进。
既然进行二次开发。那么一般是需要第三方编程软件与二次开发的软件进行连接以实现命令和数据的交互。回到题目报错问题上,当用编程软件信息传递,传递的信息对于二次开发软件是错误的或者无法理解的情况下,就会出现上述报错问题。
举个例子,当我用python对sumo进行二次开发时使用traci.trafficlight.setRedYellowGreenState(交叉口编号,控制相位)命令设置交叉口当前的信号相位时。如果传入的状态跟交叉口的中路网通行状态不一致时,如对下图中交叉口输入信号控制相位为‘GGrrrryyGG’(‘G’表示当前信号为绿灯,‘y’表示为黄灯,‘r’表示为红灯),此时就会报错。这是因为输入车流行驶方向的状态为10个,而交叉口实际设置车流行驶方向需求只有8个(若一条车道允许车流向不同方向,则算多个状态。如西进口第一条车道车流允许直行和右转,因此算两个方向)
sumo交叉口
同样,使用traci.vehicle.setRoute(veh, route)进行车辆线路规划时,如果车变量不存在或者指定边名称在路网中不存在时,也会出现类似问题。
在这里插入图片描述

总而言之,当用编程软件和二次开发软件实现上述报错问题时,是因为编程软件向二次开发软件所传输的指令、数据无法理解或者是跟自己在软件中预先的设置相矛盾。报错时重点检查这一部分的命令或者数据即可。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值