以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  QQClient之间如何能做到SendWait的功能?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=136340)

--  作者:ap9709130
--  发布时间:2019/6/11 16:09:00
--  QQClient之间如何能做到SendWait的功能?
老师

如题,希望官方能把这个功能加上去,如果不行,我们自己怎么样可以实现?

因为现在有些特定的功能都是需要确认返回的。多谢!

--  作者:有点甜
--  发布时间:2019/6/11 16:44:00
--  

 

只能变通处理。

 

方法一:通过服务器端转发信息。

 

方法二:给对方发信息,对方回复信息。然后你发送信息后,等候几秒检测是否发回信息,如果发回退出,如果超时就是没有发送成功。

 

 


--  作者:ap9709130
--  发布时间:2019/6/11 16:53:00
--  
 老师

方法二 怎么实现在等的过程中 还能知道对方是否有发过来相关的信息? 如果成功就进行下面的代码,如果超过时间 就跟出代码?

--  作者:ap9709130
--  发布时间:2019/6/11 16:57:00
--  
老师

foxtable 不是单线程的吗? 在等待的过程中还能接受QQClient的信息吗?

--  作者:ap9709130
--  发布时间:2019/6/11 17:40:00
--  
 官方真的可以考虑QQClient 之间加个SendWait的功能,因为现在我们都是把服务器端和网络服务器都二合一了。如果QQClient 比较多,都通过服务器端转,会造成服务器端的堵塞。

同时浪费了QQClient端的功能。

--  作者:ap9709130
--  发布时间:2019/6/12 15:36:00
--  
 有点甜老师

系统等候几秒还要保证QQClient可以接受信息,要怎么写代码?
我用Do...while 不行. QQClient不可以接受信息.多谢!

--  作者:有点甜
--  发布时间:2019/6/12 15:38:00
--  

试试

 

Dim sdt As Date = Date.Now
While Date.Now < sdt.AddSeconds(10)
    Application.DoEvents
End While

msgbox("10秒后执行")


--  作者:ap9709130
--  发布时间:2019/6/12 15:55:00
--  
 有点甜老师

可以了.多谢! 我自己做了个函数.代码如下:
Vars("dyhf") 变量用来接受返回的信息
ReceivedMessage事件中设置好规格
我以返回信息为 "打印" 举例.
等待时间 为 10秒

Vars("dyhf") = ""  /发信息这前把返回值清空
 QQClient.Send("对象","打印|返回对象")
  Dim st As Date = Date.now
   Do
       Application.DoEvents
  Loop While (Date.Now - st).TotalSeconds <= 10 And Vars("dyhf") = ""
   If Vars("dyhf") = "打印" Then
    MessageBox.show("打印成功!")                               
    Else
      MessageBox.show("打印主机没有反应!")                             
    End If                                                                                                                 

今天测试了一下,很好用.希望大家能用上.同时感谢有点甜老师.多谢!