以文本方式查看主题

-  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,端口以及登录按钮,是这个地方错了吗?
难道内置的用户验证这个地方还要再输入一次密码?