以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  OPEN QQ 客户端登陆失败  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=189309)

--  作者:victor_lin33
--  发布时间:2023/11/23 15:03:00
--  OPEN QQ 客户端登陆失败

蓝老师:
OPEN QQ 登入一直报错  请帮我看下哪里有问题...谢谢!



客户端的电脑 网管把它门都加入域后一直报错  
服务端电脑原
局网IP: 10.8.8.11...已改为QQServer.ServerIp = "0.0.0.0" 还是不行...
一直调试不成...找不到哪出问题



现在代码:

OpenQQ服务器项目代码 AfterOpenProject

QQServer.ServerIp = "0.0.0.0" \'指定IP地址

QQServer.ServerPort = 52177 \'指定登录端口

QQServer.HeartbeatInterval = 60 \'指定心跳时间

QQServer.HeartbeatTimeout = 180 \'指定心跳超时时间

QQServer.PortRange = "52000/53000" \'指定随机端口范围

QQserver.Buildin = True \'启用内置身份验证

QQServer.Start() \'启动QQServer
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->


服务端代码 UserLogging
If e.User IsNot Nothing Then

       e.Success = True \'允许登录

    For Each u As UserInfo In Users

          If u.Name <> e.User.Name Then

            If u.Group > "" Then

                e.Buddies.Add(u.Group & "." & u.Name)

             Else

                e.Buddies.Add(u.Name)

               End If

        End If

     Next

 End If

服务端代码ReceivedMessage

If e.Message = "GetDate" Then

    e.ReturnValue = Date.Now

End If

 
服务端项目只有一张"用户表"
用户表按照帮助档建立只3列  Name   Type   Config


客户端项目代码 LoadUserSetting

QQClient.ServerIP = "10.8.8.11" \'指定服务器IP地址

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

   

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

    QQClient.OpenChatWindow()

    \'e.Form.Controls("btnChat").Enabled = True

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

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

        msg = msg & QQClient.ServerMessage

    End If

    \'ConfigBar.Items("OpenQQ").SmallImage = GetImage("online.ico")

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

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

    \' e.Form.Controls("btnChat").Enabled = False

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

End If




--  作者:victor_lin33
--  发布时间:2023/11/23 15:04:00
--  
现在用没加入域的客户端电脑 也一样报错
--  作者:有点蓝
--  发布时间:2023/11/23 15:09:00
--  
ping一下服务器IP通不通。

看看服务器端口是不是没有开放

--  作者:victor_lin33
--  发布时间:2023/11/24 19:25:00
--  
蓝老师: 
最终在叶大佬的指导协助 我啃了16天的成果...调试到今日终于搞定...!!!
>系统推送消息OK
>好友分组OK
>相互信息在线 离线互传都OK

客户端项目用户(外部表按照帮助档作 多加了remark 共4列 Name Type Cofing Remark) 
客户端项目用户登录 = OPENQQ用户登录 
>好友分组 直接用客户端项目用户资料的分组生成

过程很难受 但也很享受...
我感恩叶大佬的支持 协助我搞懂这OPEN QQ...
我把最终代码借论坛分享给大家...可能还有些能优化  但请大家多指正...
希望像我这种小白 买永开版的 都能少走弯路  代码复制去用... 


服务端的项目事件 LoadUserSetting
Forms("QQServer").Show

--  作者:victor_lin33
--  发布时间:2023/11/24 19:29:00
--  

启动按钮的 Click
QQServer.ServerIp = e.Form.Controls("txtIP").Value \'指定IP地址
QQServer.ServerPort = e.Form.Controls("txtPort").Value \'指定端口
QQServer.HeartbeatInterval = e.Form.Controls("txtInterval").Value \'指定心跳时间
QQServer.HeartbeatTimeout = e.Form.Controls("txtTimeOut").Value \'指定心跳超时时间
QQserver.Buildin = True \'启用内置身份验证
QQServer.Start() \'启动QQServer

暂停按钮的 Click
QQServer.Stop()

推送系统消息按钮的 Click
Forms("发送系统信息").Open


send 按钮的 Click

For Each u As UserInfo In Users
    If u.Name <> UserName Then 
        If u.Group <> "" Then
            QQServer.SendNotice(u.Group & "." & u.Name , "{!}" & ""& e.Form.Controls("TextBox1").Text &"" )
        Else
            QQServer.SendNotice(u.Name , "{!}" & "" & e.Form.Controls("TextBox1").Text & "")
        End If
    End If



服务端的网路监视事件 UserLogging

For Each u As UserInfo In Users
        If u.Name <> e.UserName Then 
            If u.Group <> "" Then
                e.Buddies.Add(u.Group & "." & u.Name)
            Else
                e.Buddies.Add(u.Name)
            End If
        End If
    Next

服务端的网路监视事件 ReceivedMessage
If e.Message = "约定格式的信息" Then
    Users.Load()
End If

If e.Message = "GetDate" Then
    e.ReturnValue = Date.Now
End If


客户端的项目事件 LoadUserSetting

QQClient.ServerIP = "10.8.8.11" \'指定服务器IP地址

QQClient.ServerPort = 52177 \'指定服务器端口
QQClient.UserName = ""\'UserName
\'QQClient.UserName = User.Group & "." & UserName
QQClient.Password = ""
QQClient.stop
If QQClient.Start() = True Then\'如果登录成功
    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
If QQClient.Ready Then
    QQClient.OpenChatWindow()
End If

客户端的网路监视事件 Connected

If User.Type <> UserTypeEnum.User Then \'只有开发者和管理员才有必要通知服务端刷新
    QQClient.Send("约定格式的信号")
End If



--  作者:victor_lin33
--  发布时间:2023/11/24 19:36:00
--  
窗口图 明天再传