下面是客户端数据库连接服务器的代码,现在的问题是在测试的时候,当一般执行到12条数据的时候,程序会在( Session newSession = new Session(client);)报错,错误信息为“已添加项。字典中的关键字:“1660”所添加的关键字:“1660””,具体不知什么原因,忘高手回答,谢谢 /// <summary>
/// 客户端连接处理函数
/// </summary>
/// <param name="iar">欲建立服务器连接的Socket对象</param>
protected virtual void AcceptConn(IAsyncResult iar)
{
//如果服务器停止了服务,就不能再接收新的客户端
if (!_isRun)
{
return;
} //接受一个客户端的连接请求
Socket oldserver = (Socket)iar.AsyncState; Socket client = oldserver.EndAccept(iar); //检查是否达到最大的允许的客户端数目
if (_clientCount == _maxClient)
{
//服务器已满,发出通知
if (ServerFull != null)
{
ServerFull(this, new NetEventArgs(new Session(client)));
} }
else
{ Session newSession = new Session(client); _sessionTable.Add(newSession.ID, newSession); //客户端引用计数+1
_clientCount++; //开始接受来自该客户端的数据
client.BeginReceive(_recvDataBuffer, 0, _recvDataBuffer.Length, SocketFlags.None,
new AsyncCallback(ReceiveData), client); //新的客户段连接,发出通知
if (ClientConn != null)
{
ClientConn(this, new NetEventArgs(newSession));
}
} //继续接受客户端
_svrSock.BeginAccept(new AsyncCallback(AcceptConn), _svrSock);
}
/// 客户端连接处理函数
/// </summary>
/// <param name="iar">欲建立服务器连接的Socket对象</param>
protected virtual void AcceptConn(IAsyncResult iar)
{
//如果服务器停止了服务,就不能再接收新的客户端
if (!_isRun)
{
return;
} //接受一个客户端的连接请求
Socket oldserver = (Socket)iar.AsyncState; Socket client = oldserver.EndAccept(iar); //检查是否达到最大的允许的客户端数目
if (_clientCount == _maxClient)
{
//服务器已满,发出通知
if (ServerFull != null)
{
ServerFull(this, new NetEventArgs(new Session(client)));
} }
else
{ Session newSession = new Session(client); _sessionTable.Add(newSession.ID, newSession); //客户端引用计数+1
_clientCount++; //开始接受来自该客户端的数据
client.BeginReceive(_recvDataBuffer, 0, _recvDataBuffer.Length, SocketFlags.None,
new AsyncCallback(ReceiveData), client); //新的客户段连接,发出通知
if (ClientConn != null)
{
ClientConn(this, new NetEventArgs(newSession));
}
} //继续接受客户端
_svrSock.BeginAccept(new AsyncCallback(AcceptConn), _svrSock);
}
解决方案 »
- C#战士攻击怪物时血(生命值条)的变化 为什么设置了值后,只攻击一次就全部的血都没了呢?
- c#动态创建oracle存储过程(急),请高手解答
- 连续发送图片,重传机制怎么建立,求指导
- 窗口设置背景图片后,Label显示速度慢
- SetUp Factory 7.0如何把WINFORM的.net Framework 2.0和access打包进去?
- 一个关于用C#制作向xp那样3d界面的问题
- 请介绍几个跟数据库有关的文章,网站,电子数,例子
- 如何用Visual C#来清空回收站?
- C#接受C++dll的方法发送的消息
- c# 建一个浏览器,抓包到浏览器接收到的数据,这样的爬虫是不是就不用处理接口加密问题了
- 求正则表达式 (大于0% 小于100%)
- combobox 的事件
1660应该是sessionID,但是我不知道你这个Session newSession = new Session(client);里做了什么,最好代码也提出来,搞java的 门外汉献丑了