易语言这段代码为什么出错?
2个回答
展开全部
重连报错在于:
点击重连后,假如原来有两个客户,也就是客户数组有两个成员,
计次循环设置循环次数为2,第一次循环n为1
执行第一次循环,服务器断开客户数组[1]保存的客户,这时触发子程序 _服务器1_客户离开
而你的这个子程序内含有删除数组成员的操作,被断开的客户被从数组中删除,这时数组内只有1个成员,而在进行第2次循环时,n为2,这时客户数组没有第二个成员,所以超出下标,报错。
你加了延迟后之所以没错误是因为:
同样,触发 _服务器1_客户离开后删除了成员,但因为你设置了延迟,进程会挂起,这时你的客户端被断开之后再一次执行了连接命令,触发 _服务器1_客户进入 子程序。客户数组再次加入成员,又有了第二个成员,所以不会发生数组下标超出范围的错误,但是这么做,并不是所有客户都被重连,而是只有客户数组的第一个成员被重连两次。
另外关于你的修改端口的问题:
你的客户端连接服务器的永远是固定的8600端口,你的服务器更改端口之后,服务端并不知道,依然连接8600端口,肯定是连不上的。
谢谢,给分。。。。。。
有疑问请加 我的昵称。。。。。
点击重连后,假如原来有两个客户,也就是客户数组有两个成员,
计次循环设置循环次数为2,第一次循环n为1
执行第一次循环,服务器断开客户数组[1]保存的客户,这时触发子程序 _服务器1_客户离开
而你的这个子程序内含有删除数组成员的操作,被断开的客户被从数组中删除,这时数组内只有1个成员,而在进行第2次循环时,n为2,这时客户数组没有第二个成员,所以超出下标,报错。
你加了延迟后之所以没错误是因为:
同样,触发 _服务器1_客户离开后删除了成员,但因为你设置了延迟,进程会挂起,这时你的客户端被断开之后再一次执行了连接命令,触发 _服务器1_客户进入 子程序。客户数组再次加入成员,又有了第二个成员,所以不会发生数组下标超出范围的错误,但是这么做,并不是所有客户都被重连,而是只有客户数组的第一个成员被重连两次。
另外关于你的修改端口的问题:
你的客户端连接服务器的永远是固定的8600端口,你的服务器更改端口之后,服务端并不知道,依然连接8600端口,肯定是连不上的。
谢谢,给分。。。。。。
有疑问请加 我的昵称。。。。。
追答
我的企鹅账号就是我的昵称,加我吧。百度不让说。。。。。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询