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

2025-07-02

1.简介

本篇文【běn piān wén】🏒章介绍⛺CS机器人【jī qì rén】作客户【zuò kè hù】端在使用脚本【yòng jiǎo běn】🕎与服务【yǔ fú wù】器做socket通讯时🕟怎么样【zěn me yàng】循环判【xún huán pàn】断连接,通讯断🌩开后怎么样【zěn me yàng】自动连接,以下内🌭容要求机器人【jī qì rén】应用2.12及以上⛅

2.操作流程

  1. 建立 TCP/IP 网络通信

1.当我们🌨单纯使【dān chún shǐ】用【yòng】👁 socket_open()建立🍰 TCP/IP 网络通【wǎng luò tōng】🦓信指令时👳,如果服【rú guǒ fú】务器还未打开时👳,机器人【jī qì rén】端户端未连接【wèi lián jiē】😱到服务器,程序依然往下运行,运行到🈲发送/接收时【jiē shōu shí】👳机器人【jī qì rén】就🐺会报错如图1-1所示,这样机📢器人就【qì rén jiù】🐺必须初始化重【shǐ huà chóng】新运行🍟。

图1-1

2.为了避【wéi le bì】免图【miǎn tú】1-1的情况发生我💜们可以【men kě yǐ】利用【lì yòng】socket_open()建立 TCP/IP 网络通信时的⛹返回值做条件判断循🎵环连接直到连接成功【jiē chéng gōng】后程序才继续【cái jì xù】往下运【wǎng xià yùn】🏧行【háng】。如图【rú tú】1-2所示如果服务【guǒ fú wù】🎻器未打开时机【kāi shí jī】🥠器人会🍮一直与服务器建立连接并打📊印🔟“连接失败📑”到EliRobot 的日志📆栏中。

图1-2

3 当服务器打开【qì dǎ kāi】时机器【shí jī qì】人客户【rén kè hù】🎃端连接【duān lián jiē】♒成功后🍈会打印到“连接成功“EliRobot 的日志栏中如🕶图【tú】💳1-3所示【suǒ shì】👠,可以用【kě yǐ yòng】下面代码1-1配合图【tú】💳1-4的图【tú】💳形化编程直接调用df脚本实🏧现此操【xiàn cǐ cāo】🗞作。

图1-3


图1-4


代码1-1

2.向服务器发送数据

1.我们单🎠纯的使【chún de shǐ】用发送😺指令例【zhǐ lìng lì】🏑如:socket_send_string(str, socket_name="socket_0")未判断发送是否成功时,如果当机器人【jī qì rén】🏊客户端🎪当时已【dāng shí yǐ】经与服务器断【wù qì duàn】🎀开连接了或发【le huò fā】送失败后程序【hòu chéng xù】依然往【yī rán wǎng】下继续🚷运行,如图💇2-1所示。

图2-1

2.为了避免图【miǎn tú】2-1的情况【de qíng kuàng】发生,我们可以利用【yòng】🏎发送指【fā sòng zhǐ】😓令的返回时作【huí shí zuò】为判断是否发送成功【sòng chéng gōng】,发送失败时一😼直发送直到发送成功【sòng chéng gōng】为止【wéi zhǐ】,发送失败的情【bài de qíng】况一般都是机📪器人客【qì rén kè】🍧户端与🚺服务器【fú wù qì】📩断开连接时出【jiē shí chū】🌚现的➗,所以我🔡们可以在发送前和发送失败后通过🌃“socket_is_connected()”判断与服务器【fú wù qì】📩连接的状态如果断开🛌重新连接再次发送,如图【rú tú】2-2所示👷,可以用【yòng】下面代码【mǎ】➡2-1配合图2-3的图形【de tú xíng】🤮化编程直接调用【yòng】df脚本实现此操【xiàn cǐ cāo】🐐作【zuò】。

图2-2



代码2-1

3.从服务器接收数据

1.当我们单纯的🗓使用接【shǐ yòng jiē】收指令例如💺“socket_read_string(timeout=2)”接收服【jiē shōu fú】务器的【wù qì de】🦃数据时:

a:如果当机器人【jī qì rén】与服务🐕器未连【qì wèi lián】接时就【jiē shí jiù】🚙接收数据就会如图3-1所示报【suǒ shì bào】错⏳,此时程序已经🌩停止需要重新初始化【chū shǐ huà】👎程序。

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

图3-1


图3-2

2.为【wéi】👀了避免【le bì miǎn】以上a.b两种情🕺况发生【kuàng fā shēng】,我们可以在接【jiē】🏘收数据【jù】😛之前通【zhī qián tōng】过🚸“socket_is_connected()”判断与🎃服务器连接【jiē】的状态如【rú】果断开重新连接【jiē】,并通过🚸再次接【jiē】收接【jiē】收指令例🐥如【rú】“socket_read_string(timeout=2)”的返回【de fǎn huí】🌏值判断🏪是否接【jiē】🕙收到数据【jù】😛,返回值【fǎn huí zhí】为【wéi】👀0时【shí】,再次接【jiē】收数据【jù】😛,如图【rú tú】💦3-3所示,以用下面代码3-1配合图3-3的图形化编程直接调【zhí jiē diào】用df脚本实现此操【xiàn cǐ cāo】⏸作🐎。

图3-2


图3-3

代码3-1


3.常见问题解答

  1. 机器人应用版本必须是2.12及以上
  2. 以上代🔊码是以【mǎ shì yǐ】发送字【fā sòng zì】符串和🔆读取字【dú qǔ zì】符串为🧞例【lì】😎,如果想👲发送/读取其他数据类型🙍,只需要更换代码中的socket_send_string/socket_read_string即可,具体指令参考【lìng cān kǎo】CS机器人❓脚本手【jiǎo běn shǒu】册下载中心【zhōng xīn】_机器人❓技术【jì shù】🍑-漫蛙机器人❓

脚本文件:socket.script



download-669.svg comicon14.svg

电话咨询

download-397.svg comicon15.svg

免费试用

Vector.svg Frame.svg

微信小程序

img1.jpg

微信小程序

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

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

我已知【wǒ yǐ zhī】晓并同【xiǎo bìng tóng】意漫蛙🥈通过电子邮件【zǐ yóu jiàn】🖨发送相🍑关资料

提交