以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- OpenQQ客户端登录后服务端提示索引超出了数组界限 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=89855) |
-- 作者:天若千颖 -- 发布时间:2016/8/31 11:11:00 -- OpenQQ客户端登录后服务端提示索引超出了数组界限 OpenQQ客户端登录后服务端提示:索引超出了数组界限 使用的是内置的身份验证,不知道是怎么回事。
|
-- 作者:有点蓝 -- 发布时间:2016/8/31 11:13:00 -- 服务端登录事件代码贴出来 |
-- 作者:天若千颖 -- 发布时间: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 是这个么?
|
-- 作者:天若千颖 -- 发布时间: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 |
-- 作者:狐狸爸爸 -- 发布时间:2016/8/31 11:21:00 -- 错误提示会告诉你出错的事件,然后可以先自己调试分析一下: http://www.foxtable.com/webhelp/scr/1485.htm
搞不定在发帖,提出错误提示,并告知是哪一行出错。
自己主动动手,尝试去分析和解决问题,这样这样进步会更快。 |
-- 作者:狐狸爸爸 -- 发布时间:2016/8/31 11:28:00 -- Dim pts() As String = e.UserName.Split(".") if pts.length < 2 then messagebox.show(“用户名格式不对吧,一般是\'部门.用户名\',你看看这个用户名是什么:" & e.username) end if |
-- 作者:天若千颖 -- 发布时间:2016/8/31 11:29:00 -- 客户端把登录的所有事件都执行完了,返回登录失败的原因,超出规定事件未获得服务器响应。 服务端也正常启动,但是客户端一点击“登录”,就弹出提示: .NET Framework 版本:2.0.50727.6387 Foxtable 版本:2016.7.29.1 错误所在事件:项目,Server 详细错误信息: 索引超出了数组界限。 然后客户端就返回失败的原因:超出规定事件未获得服务器响应。 这个好像不是代码错误。 |
-- 作者:有点蓝 -- 发布时间:2016/8/31 11:29:00 -- dr2("部门") & "." & dr2("姓名") 应该是有重复的数据了,同一部门姓名相同
|
-- 作者:天若千颖 -- 发布时间:2016/8/31 11:30:00 -- 使用的是内置的身份验证,不需要填写用户名和密码吧? |
-- 作者:天若千颖 -- 发布时间:2016/8/31 11:35:00 -- 我直接把客户端登录的窗口的“部门”“姓名”“密码”删除“和输入框都删除了,直接一个服务器IP,端口以及登录按钮,是这个地方错了吗? 难道内置的用户验证这个地方还要再输入一次密码?
|