搜索
查看: 4809|回复: 2

一个迷惑了我几天的WSOCK接收数据处理问题请教

[复制链接]

8

主题

124

帖子

905

积分

三级会员

Rank: 4

积分
905
发表于 2013-3-20 15:05:07 | 显示全部楼层 |阅读模式
我使用wsock接收数据遇到问题,具体的原因如下:
程序中所使用的库文件是:import wsock.tcp.client;
1、我准备使用定时器来接收服务器返回的数据,作为TCP连接的心跳。同时在库里面看到一句:?.tcp.client = !tcp_client.  不知道什么意思,希望哪位知道的指点一下,谢谢?
2、我使用定时器来接收数据主要是因为我还不会使用多线程来处理,可我用定时器接收数据,打印一次后,整个程序就卡住了,不能进行后面的数据接收,我想在规定的时间内收到数据,就说明服务器还在线,否则服务器与本机掉线。我的程序代码如下:
  1. import win.ui;
  2. import wsock.tcp.client;
  3. /*DSG{{*/
  4. var winform = ..win.form( bottom=399;parent=...;right=599;text="aardio Form" )
  5. winform.add(  )
  6. /*}}*/
  7. var tcp = wsock.tcp.client();
  8.    var Tcp_Falg =  tcp.connect("127.0.0.1",8888);
  9.    
  10. var Timer_Out = 0;//超时间标志


  11. //下面我是使用定时器进行查询数据的,原因是我不会使用多线程
  12. //希望哪位高手指点,谢谢
  13. tmid = winform.setInterval(
  14.         100/*毫秒*/,
  15.         function(hwnd,msg,id,tick){//定时执行代码
  16.      //我想将接收到的数据打印出来
  17.                 io.open();
  18.                 if(Tcp_Falg == true){
  19.                         for(str,size in tcp.eachRead() ){
  20.                         io.print(str);
  21.                         Timer_Out = 0 ;
  22.                   }}
  23.                   else {
  24.                      Timer_Out = Timer_Out + 1;
  25.                      if(Timer_Out > 15){
  26.                        win.msgboxTimeout("连接已经掉线",)                            
  27.                      }
  28.                 }       
  29.         }
  30. );


  31. //-----下面是发送程序的定时器----  
  32. //我不会使用多线程
  33. tmid1 = winform.setInterval(
  34.         1000/*毫秒*/,
  35.         function(hwnd,msg,id,tick){//定时执行代码
  36.                 tcp.write("helloWord");//服务器返回同样的数据
  37.                 //winform.clearInterval(id)//移除此定时器
  38.                 //winform.changeInterval(id,2000)//重新设定时间间隔
  39.         }
  40. );



  41. winform.show()
  42. win.loopMessage();
复制代码
上面这个看着简单,我缺折腾了两天。
回复

使用道具 举报

8

主题

462

帖子

2551

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2551
发表于 2013-3-20 15:26:22 | 显示全部楼层

不用多线程做耗时操作必然会卡住,要想不卡请用多线程, 不想学习你折腾了两天,学多线程半天就够了。

不用多线程做耗时操作必然会卡住,要想不卡请用多线程,
不想学习你折腾了两天,学多线程半天就够了。
回复

使用道具 举报

8

主题

124

帖子

905

积分

三级会员

Rank: 4

积分
905
 楼主| 发表于 2013-3-20 16:06:38 | 显示全部楼层

原来是这样的原因,看来必须学习 等我的好消息, 开工

原来是这样的原因,看来必须学习
等我的好消息,
开工
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2020-8-15 12:05 , Processed in 0.062500 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表