以文本方式查看主题

-  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 仍然是服务端

菜单的管理项目功能区,单击网络监视器,设置UDPClientReceivedMessage事件代码 (用于解析收到的消息)   消息格式为  %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编辑过]