以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 客户端的表增加一条数据后,如何实时反应到服务端? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=121846) |
-- 作者:ycwk -- 发布时间:2018/7/13 19:38:00 -- 客户端的表增加一条数据后,如何实时反应到服务端? 我做了一个报障的程序,但有个问题。 客户端与服务端加载同一个表,在客户端的该表中增加一条数据后,如何实时反应到服务端?我现在用定时器,5分钟刷新一下该表,但这样做实时性太差,有什么思路是可以实时通知的?
|
-- 作者:有点蓝 -- 发布时间:2018/7/13 20:31:00 -- 参考:http://www.foxtable.com/webhelp/scr/3006.htm |
-- 作者:ycwk -- 发布时间:2018/7/15 14:41:00 -- 学习了一下openQQ的帮助,非要登录服务端及客户端的两个操作者互为好友才能收发消息吗? 我不要上线通知行不行?因为服务端是为了收到客户端的提醒,其实理论上在不在线客户端都要发。 |
-- 作者:有点甜 -- 发布时间:2018/7/15 15:28:00 -- 两个客户端之间,需要添加为好友,才能发信息。
但是,如果你是给服务器发信息,直接发就可以的,如 http://www.foxtable.com/webhelp/scr/2978.htm
|
-- 作者:ycwk -- 发布时间:2018/7/15 15:58:00 -- 只在服务端运行以下代码可以吗? QQServer.ServerIp = "192.168.100.6" \'指定IP地址 QQServer.ServerPort = 52177 \'指定登录端口 QQServer.HeartbeatInterval = 30 \'指定心跳时间 QQServer.HeartbeatTimeout = 100 \'指定心跳超时时间 QQServer.Start() \'启动QQServer 服务端的登录事件之类的代码还要不要写? 我只需要用客户端发通知给服务端就行了 换句话说:我要往服务端发消息,服务端和客户端最少的代码分别是什么?
[此贴子已经被作者于2018/7/15 17:28:09编辑过]
|
-- 作者:有点甜 -- 发布时间:2018/7/15 19:15:00 -- 把QQServer的代码,全部拷贝到你自己的项目里面去,即可。 |
-- 作者:ycwk -- 发布时间:2018/7/15 21:01:00 -- QQServer : QQServer.ServerIp = "192.168.100.6" \'指定IP地址 QQServer.ServerPort = 52177 \'指定登录端口 QQServer.HeartbeatInterval = 30 \'指定心跳时间 QQServer.HeartbeatTimeout = 100 \'指定心跳超时时间 QQServer.Start() \'启动QQServer QQclient: QQClient.ServerIP = "192.168.100.6" \'指定服务器IP地址 QQClient.ServerPort = 52177 \'指定服务器 登录端口 qqclient.send("服务器你好") 就上面这几行代码,其它的不要可以吗? 因为我不需要登录,验证这些过程,可否省掉? |
-- 作者:有点甜 -- 发布时间:2018/7/15 22:45:00 -- 1、必须登录到服务器以后,才可以给服务器发送信息(OpenQQ)
2、或者,你可以udp通信, http://www.foxtable.com/webhelp/scr/3004.htm
|
-- 作者:ycwk -- 发布时间:2018/7/16 8:26:00 -- 如果用udpclient进行消息收发,但调试程序时,服务端和客户端都在一台电脑上, 都用52178的端口,会报 每个套接字只能使用一次的错误,怎么办? |
-- 作者:ycwk -- 发布时间:2018/7/16 8:28:00 -- 使用下面的代码进行通信报错, 客户端报,向一个无法连接的网络尝试了一个套接字操作,假定我本机的IP是 172.18.11.151 1. 在项目服务端的AfterOpenProject事件中设置代码: If UDPClients.Count = 0 Then UDPClients.Add("UDP1",new UDPClient("UDP1") ) End If UDPClients("UDP1").IP = "127.0.0.1" \'这里是指向自己 UDPClients("UDP1").Port = "52178" UDPClients("UDP1").Start() 2 仍然是服务端 菜单的“管理项目”功能区,单击“网络监视器”,设置UDPClient的ReceivedMessage事件代码 (用于解析收到的消息) 消息格式为 %E|ID号% Dim msg As String = e.Message Dim ret As String = "!false" If e.Message.StartsWith("%") AndAlso e.Message.EndsWith("%") \'假定收到的信息头尾都是"%" msg = msg.Trim("%") \'去掉收到的消息中头尾的% Dim prefix As String = msg.SubString(0,1) Select Case prefix Case "E" \'查询 \'E表示紧急 emergent msg = msg.TrimStart("E","|") \'把开头的E和|都删除 Dim dr As DataRow = DataTables("自助报障记录表").Find("ID = \'" & msg & "\'") If dr IsNot Nothing Then \'调用语音播放ID号的内容 end if \'Case "U" \'留着区分非紧急消息 case else end select \' e.ReturnValue = ret \'用于向发送端返回处理后的结果,此场景下不需要 end if
3.客户端 UDPClients("UDP1").IP = "127.0.0.1" \'指向自己,好像不可以省 UDPClients("UDP1").Port = 52178 \'使用这个端口 UDPClients("UDP1").Start() UDPClients("UDP1").Send(IP,端口,"%E|" & currenttable.current("_identify") & "%") UDPClients("UDP1").stop() [此贴子已经被作者于2018/7/16 8:29:20编辑过]
|