CS机器人运行中socket通讯断开自动重连

2025-07-07

1.简介

本篇文♈章介绍【zhāng jiè shào】CS机器人🕘作客户端在使【duān zài shǐ】用脚本【yòng jiǎo běn】与服务器做socket通讯时怎么样【zěn me yàng】😱循环判断连接,通讯断开后怎么样【zěn me yàng】😱自动连接🏛,以下内容要求【róng yào qiú】机器人🕘应用【yīng yòng】🥠2.12及以上【jí yǐ shàng】🔳

2.操作流程

  1. 建立 TCP/IP 网络通信

1.当我们单纯使用🎯 socket_open()建立 TCP/IP 网络通【wǎng luò tōng】信指令【xìn zhǐ lìng】时【shí】,如果服务器【qì】还未打开🏥时【shí】,机器【qì】人🚛端户端🛀未连接到服务器【qì】,程序依【chéng xù yī】然往下📸运行【yùn háng】🥟,运行【yùn háng】🥟到发送🎞/接收时【jiē shōu shí】机器【qì】人🚛就会报🗡错如图【cuò rú tú】1-1所示,这样机【zhè yàng jī】👀器【qì】人就🗑必须初始化重新运行【xīn yùn háng】🥟。

图1-1

2.为了避【wéi le bì】🐄免图【miǎn tú】🛑1-1的情况发生我们可以👝利用socket_open()建立 TCP/IP 网络通🍍信时的返回值🤪做条件判断循环连接直到【dào】连接成功后程序【hòu chéng xù】才继续往下运行。如图【rú tú】1-2所示如【suǒ shì rú】✖果服务【guǒ fú wù】🐸器未打🥚开时机器人会一直与【yī zhí yǔ】服务器【fú wù qì】😄建立连接并打印【yìn】📽“连接失🎋败”到【dào】EliRobot 的日志栏中【lán zhōng】。

图1-2

3 当服务器打开🐭时机器人客户端连接成功【chéng gōng】❓后会打印到【yìn dào】“连接成功【chéng gōng】❓“EliRobot 的日志【de rì zhì】栏中如【lán zhōng rú】⬛图🥧1-3所示,可以用下面代【xià miàn dài】码1-1配合图🖼1-4的图形⏸化编程🌺直接调🦔用df脚本实【jiǎo běn shí】现此操【xiàn cǐ cāo】作。

图1-3


图1-4


代码1-1

2.向服务器发送数据

1.我们单纯的使【chún de shǐ】用发送指令例如🛠:socket_send_string(str, socket_name="socket_0")未判断【wèi pàn duàn】发送是否成功🌥时【shí】,如🛠果当机【guǒ dāng jī】器人客户端🍛当时【shí】已🌾经与服务器断开连接【kāi lián jiē】了或发⏯送失败后程序🕷依然往【yī rán wǎng】😃下继续【xià jì xù】运行【yùn háng】,如🛠图2-1所示📟。

图2-1

2.为了避【wéi le bì】免图2-1的情况发生❔,我们可以【men kě yǐ】利用🏤发送指【fā sòng zhǐ】令的返回时作为判断【wéi pàn duàn】🚟是否发送成功【sòng chéng gōng】🥝,发送失败时一【bài shí yī】直发送🐌直到发送成功【sòng chéng gōng】🥝为止【wéi zhǐ】🚏,发送失败的情🍐况一般【kuàng yī bān】都是机器人客户端与服务器【fú wù qì】❎断开连接时出现的🏉,所以我们可以【men kě yǐ】在发送🛑前和发送失败后通过【hòu tōng guò】“socket_is_connected()”判断与【pàn duàn yǔ】服务器【fú wù qì】❎连接的【lián jiē de】状态如😎果断开😋重新连👼接再次发送,如图🔴2-2所示,可以用【kě yǐ yòng】下面代📀码【mǎ】🗓2-1配合图2-3的图形化编程【huà biān chéng】直接调【zhí jiē diào】用df脚本实【jiǎo běn shí】现此操作。

图2-2



代码2-1

3.从服务器接收数据

1.当我们【dāng wǒ men】单纯的💍使用接收指令【shōu zhǐ lìng】例如【lì rú】🐦“socket_read_string(timeout=2)”接收服🏞务器的数据时:

a:如果当【rú guǒ dāng】机器人【jī qì rén】与服务🛂器未连接时就【jiē shí jiù】接收数【jiē shōu shù】据就会🍲如图【rú tú】3-1所示报😅错【cuò】🍨,此时程序🥜已经停止需要重新初始化程序🥜。

b:如果我【rú guǒ wǒ】们机器人客户【rén kè hù】端未接收【wèi jiē shōu】到数据⛑程序依【chéng xù yī】🚦然会往下继续运行,这样就会影响💼我们的程序【xù】流🍲程,如图3-2所示【suǒ shì】💬(未接收【wèi jiē shōu】到数据⛑,程序依【chéng xù yī】🚦然往下【rán wǎng xià】🤣运行,当运行【dāng yùn háng】到索引字符串转换时【zhuǎn huàn shí】没有数据程序【xù】😒就会报错【cuò】,这时程序【xù】🤲已经停【yǐ jīng tíng】止需要【zhǐ xū yào】重新初始化⭕程序【xù】🤲)。

图3-1


图3-2

2.为了避免以上📿a.b两种情【liǎng zhǒng qíng】🏧况发生,我们可【wǒ men kě】以在接【yǐ zài jiē】收数据【jù】之前通【zhī qián tōng】过【guò】“socket_is_connected()”判断与【pàn duàn yǔ】😻服务器连接【jiē】的🎁状态如➰果断开重新连接【jiē】,并通过【guò】再次接【jiē】🎭收接【jiē】收指令例如“socket_read_string(timeout=2)”的返回值判断是否接【jiē】收到数据【jù】,返回值为0时🍟,再次接【jiē】🎭收数据【jù】,如图【rú tú】🎥3-3所示🛢,以用【yòng】下🌛面代码📄3-1配合图【pèi hé tú】3-3的图形😂化编程【huà biān chéng】直接【jiē】调用【yòng】df脚本实现此操🧟作【zuò】。

图3-2


图3-3

代码3-1


3.常见问题解答

  1. 机器人应用版本必须是2.12及以上
  2. 以上代【yǐ shàng dài】码是以【mǎ shì yǐ】🤸发送字【fā sòng zì】符串和【fú chuàn hé】读取字符串为例🕌,如果想发送/读取其【dú qǔ qí】🥢他数据类型,只需要更换代码中的🌇socket_send_string/socket_read_string即可,具体指令参考【lìng cān kǎo】CS机器人【jī qì rén】👿脚本手🌤册下载中心【zhōng xīn】_机器人【jī qì rén】👿技术-漫蛙机器人【jī qì rén】👿

脚本文件:socket.script



download-669.svg comicon14.svg

电话咨询

download-397.svg comicon15.svg

免费试用

Vector.svg Frame.svg

微信小程序

img1.jpg

微信小程序

准备好突破增长瓶颈,开启智能制造了吗?
了解我们的机器人如何帮助您的业务增长
欢迎下载漫蛙机器人资料

我已阅读并同意漫蛙《隐私政策》《法律声明》

我已知【wǒ yǐ zhī】晓并同意漫蛙【yì màn wā】通过电子邮件✌发送相【fā sòng xiàng】🏧关资料🐥

提交