以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  openqq登陆问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=145489)

--  作者:lal021962
--  发布时间:2020/1/22 14:25:00
--  openqq登陆问题

服务端的UserLogging事件如下

 

Dim pts() As String = e.UserName.Split(".")
Dim dr1 As DataRow
dr1 = DataTables("openqq用户列表").Find("所属公司 = \'" & pts(0) & "\' And 用户名 = \'" & pts(1) & "\'")
If dr1 Is Nothing  Then \'判断此用户不存在
    e.Message  = "用户名错误!" \'返回给登录者的提示信息
    Return
End If
If dr1("密码") <> e.Password Then \'如果密码错误
    e.Message  = "登录密码错误!" \'返回给登录者的提示信息
    Return
End If
e.Success = True \'允许用户登录
\'添加所有同事为好友
For Each dr2 As DataRow In DataTables("openqq用户列表").DataRows
    Dim nm As String =  dr2("所属公司") & "." & dr2("用户名")
    If nm <> e.UserName Then \'如果不是登录者本人
        e.Buddies.Add(nm)
    End If
Next

 

服务端启动代码如下:
QQServer.ServerIp = "127.0.0.1" \'指定IP地址
QQServer.ServerPort = 52177 \'指定登录端口
QQServer.HeartbeatInterval = 30 \'指定心跳时间
QQServer.HeartbeatTimeout = 100 \'指定心跳超时时间
QQServer.Start() \'启动QQServer

 

 

启动客户端代码如下:

小黄 - Foxtable软件 2020/1/22 星期三 14:11:46
启动客户端写了什么代码?服务端的UserLogging事件又写了什么代码?

侧面还行 2020/1/22 星期三 14:12:26
QQClient.ServerIP = "127.0.0.1" \'指定服务器IP地址

QQClient.ServerPort = 52177  \'指定服务器登录端口

QQClient.UserName = "易装销售.杨龙"

QQClient.Password = "888"

If QQClient.Start() = True \'如果登录成功

    Dim msg As String =  "恭喜,OpenQQ登录成功!"

    If QQClient.ServerMessage > "" Then \'如果服务器返回了欢迎信息

        msg = msg & QQClient.ServerMessage

    End If

    PopMessage(msg,"提示",PopiconEnum.Infomation,5)

Else \'如果登录失败,显示服务器返回错误信息

   PopMessage("QQClient登录失败,原因:" & vbcrlf & QQClient.ServerMessage,"提示",PopiconEnum.Error,5)

End If

服务端成功启动后,客户端登陆不成功,出现如下提示:

 

.NET Framework 版本:4.0.30319.1026
Foxtable 版本:2019.12.17.18
错误所在事件:启动IMClient
详细错误信息:
An item with the same key has already been added.

 

 

请问是何原因

 

 


--  作者:有点蓝
--  发布时间:2020/1/22 14:36:00
--  
"openqq用户列表"是不是有空行?或者有"所属公司"、"用户名"都相同的数据?
--  作者:lal021962
--  发布时间:2020/1/22 15:33:00
--  
有空行,我试试
--  作者:lal021962
--  发布时间:2020/1/22 15:42:00
--  

空行删除后出现新问题,显示如下:

 

规定时间内未获服务器响应。


--  作者:lal021962
--  发布时间:2020/1/22 15:43:00
--  

如果用这段代码是能登陆成功的

 

Dim pts() As String = e.UserName.Split(".")
Dim
dr As DataRow
dr
= DataTables("用户").Find("部门 = \'" & pts(0) & "\' And 姓名 = \'" & pts(1) & "\'")
If
dr Is Nothing  Then \'判断此用户不存在
    e.Message  =
"
用户名错误!" \'返回给登录者的提示信息
    Return

End
If
If
dr("密码") <> e.Password Then \'如果密码错误
   
e.Message  = "登录密码错误!" \'返回给登录者的提示信息
   
Return

End
If
e
.Success = True \'允许用户登录
\'添加存储在好友列的非本部门的好友

If
dr.IsNull("好友") = False Then
    Dim nms() As String = dr(
"
好友").Split(",")
    e.Buddies.AddRange(nms)

End
If
\'最后添加相同部门的同事为好友

For
Each dr In DataTables("用户").Select("部门 = \'" & pts(0) & "\'")
    Dim nm As Stringdr("部门") & "." & dr("姓名")
    If nm <> e.UserName Then \'如果不是登录者本人
       
e.Buddies.Add(nm)
    End
If

Next


--  作者:有点蓝
--  发布时间:2020/1/22 15:59:00
--  
把您做的服务端项目发上来看看