|
本帖最后由 YxNirvana 于 2013-12-29 18:33 编辑
脚本例子:
服务端和客户端两脚本.
服务端:负责帐号分配和数据处理,相当于一个总控.
客户端:从服务器接收任务并且去执行.
问题出在TCP通信方面
如下例子:
TC用的是winsock api,用一个循环来接收数据并输出错误信息
服务端:(连接等方面省略)- 循环(真)
- 网络.接收(客户端句柄,数据内容)
- 调试输出(网络.获取错误信息())
- 数据处理(数据内容)
- 循环结束
复制代码
客户端:同上
问题来了:两个问题,性质一样.
问题1前提:客户端连接上服务器后,不管因为什么原因客户端自己强制断开了.
(脚本出错啊,界面销毁出错断开信息没发错出去啊,情况还是很多的)
这时候就出现两种情况:
情况1:客户端没有给服务端发送过信息,这时候服务端能的到错误信息.
情况2:客户端给服务端发送过信息,这时候服务端就不能的到错误信息.
并且更严重的是,服务端会不断接收客户端上次发送的信息,直到服务器直接卡死.
问题2前提:服务端连接上服务器后,不管因为什么原因服务端自己强制断开了.
情况同问题1,但是造成的结果比较严重,客户端全部卡死.
再说说网络.获取错误信息() 得到错误信息只是一个错误号,如果出现在客户端还好,如果出现在服务端根本就不知道哪个客户端出问题了.
这样就造成了一个情况,这个服务网中,任意个体出现问题,则要全网重启.
客户端出现问题,则服务端卡死,强制结束后,所有的客户端也会跟着卡死.
如果客户端少还好说,要是很多的话,那么出现错误的情况太多了.
万一的情况总会出现,但是连纠错都不能这情何以堪啊.
建议TC工具箱中增加类似于VB的winsock的控件.
或者将网络.获取错误信息() 做的更好些.
========测试方法======
1.打开服务端,客户端
2.打开服务端连接(勾选),然后勾选客户端连接
3.直接关闭客户端脚本(为了模拟出问题强制关闭)
4.看服务端的输出吧,问题大大的
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|