Foxtable(狐表)用户栏目专家坐堂 → OpenQQ客户端登录后服务端提示索引超出了数组界限


  共有4492人关注过本帖树形打印复制链接

主题:OpenQQ客户端登录后服务端提示索引超出了数组界限

帅哥哟,离线,有人找我吗?
天若千颖
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:682 积分:4871 威望:0 精华:0 注册:2014/6/15 16:01:00
OpenQQ客户端登录后服务端提示索引超出了数组界限  发帖心情 Post By:2016/8/31 11:11:00 [显示全部帖子]

OpenQQ客户端登录后服务端提示:索引超出了数组界限
使用的是内置的身份验证,不知道是怎么回事。

 回到顶部
帅哥哟,离线,有人找我吗?
天若千颖
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:682 积分:4871 威望:0 精华:0 注册:2014/6/15 16:01:00
  发帖心情 Post By:2016/8/31 11:18:00 [显示全部帖子]

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

是这个么?

 回到顶部
帅哥哟,离线,有人找我吗?
天若千颖
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:682 积分:4871 威望:0 精华:0 注册:2014/6/15 16:01:00
  发帖心情 Post By:2016/8/31 11:20:00 [显示全部帖子]

网络监视器:
UserLogging:
Dim pts() As String = e.UserName.Split(".")
Dim dr1 As DataRow
dr1 = DataTables("用户").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("用户").DataRows
    Dim nm As String =  dr2("部门") & "." & dr2("姓名")
    If nm <> e.UserName Then '如果不是登录者本人
        e.Buddies.Add(nm)
    End If
Next

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

UserChangPassageword:
Dim pts() As String = e.UserName.Split(".")
Dim dr As DataRow = DataTables("用户").Find("部门 = '" & pts(0) & "' And 姓名 = '" & pts(1) & "'")
If dr Is Nothing  OrElse dr("密码") <> e.OldPassword  Then
   e.ReturnMessage = "原密码不符!"
Else
    dr("密码") = e.NewPassword
    dr.Save()
   e.ReturnMessage = "OK" '返回约定的字符,通知客户端,密码修改成功
End If


 回到顶部
帅哥哟,离线,有人找我吗?
天若千颖
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:682 积分:4871 威望:0 精华:0 注册:2014/6/15 16:01:00
  发帖心情 Post By:2016/8/31 11:29:00 [显示全部帖子]

客户端把登录的所有事件都执行完了,返回登录失败的原因,超出规定事件未获得服务器响应。

服务端也正常启动,但是客户端一点击“登录”,就弹出提示:

.NET Framework 版本:2.0.50727.6387
Foxtable 版本:2016.7.29.1
错误所在事件:项目,Server
详细错误信息:
索引超出了数组界限。

然后客户端就返回失败的原因:超出规定事件未获得服务器响应。

这个好像不是代码错误。


 回到顶部
帅哥哟,离线,有人找我吗?
天若千颖
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:682 积分:4871 威望:0 精华:0 注册:2014/6/15 16:01:00
  发帖心情 Post By:2016/8/31 11:30:00 [显示全部帖子]

使用的是内置的身份验证,不需要填写用户名和密码吧?

 回到顶部
帅哥哟,离线,有人找我吗?
天若千颖
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:682 积分:4871 威望:0 精华:0 注册:2014/6/15 16:01:00
  发帖心情 Post By:2016/8/31 11:35:00 [显示全部帖子]

我直接把客户端登录的窗口的“部门”“姓名”“密码”删除“和输入框都删除了,直接一个服务器IP,端口以及登录按钮,是这个地方错了吗?
难道内置的用户验证这个地方还要再输入一次密码?

 回到顶部
帅哥哟,离线,有人找我吗?
天若千颖
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:682 积分:4871 威望:0 精华:0 注册:2014/6/15 16:01:00
  发帖心情 Post By:2016/8/31 11:39:00 [显示全部帖子]

登录按钮的Click:

If QQClient.Ready Then
    MessageBox.show("QQClient已经启动,请先关闭","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
   
Return

End
If
QQClient
.ServerIP = e.Form.Controls("txtIP").Value  '指定服务器IP地址
QQClient
.ServerPort = e.Form.Controls("txtPort").Value  '指定服务器端口
If
user.Type = UserTypeEnum.User Then '如果是普通用户
    QQClient.UserName =""
    QQClient.Password =
""

Else
'如果是开发者或管理员
    Dim pwd As String
    If InputPassWord(pwd,"提示","请输入" & User.Name & "的密码:") Then
       
QQClient.UserName = User.Name
        QQClient.Password = pwd
    Else
        Return
    End
If

End
If
If
QQClient.Start() = True '如果登录成功
    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


 回到顶部
帅哥哟,离线,有人找我吗?
天若千颖
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:682 积分:4871 威望:0 精华:0 注册:2014/6/15 16:01:00
  发帖心情 Post By:2016/8/31 11:43:00 [显示全部帖子]

用除了管理员之外的用户登录,提示“用户名错误”

显然,当别的用户的时候,服务端执行了“UserLogging”事件,并检验到没用使用用户名登录:
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

但是我服务端启动的时候,使用的是:
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

怎么客户端登录的时候还会执行UserLogging中检测输入用户名和密码是否正确的命令呢?
[此贴子已经被作者于2016/8/31 11:49:39编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
天若千颖
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:682 积分:4871 威望:0 精华:0 注册:2014/6/15 16:01:00
  发帖心情 Post By:2016/8/31 11:52:00 [显示全部帖子]

是的,从一新建项目就是用外部数据源了。

 回到顶部
帅哥哟,离线,有人找我吗?
天若千颖
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:682 积分:4871 威望:0 精华:0 注册:2014/6/15 16:01:00
  发帖心情 Post By:2016/8/31 12:51:00 [显示全部帖子]

已经上传。

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:qclng_201608311238.rar

 

开发者密码:888.

 

使用开发模式登陆,如果数据加载页面提示有数据表链接错误,请忽略。


 回到顶部
总数 18 1 2 下一页