请教:如下错误是怎么引起的

windinwing 2003-07-29 12:57:53
异常如下:

System:一个封锁操作被对 WSACancelBlockingCall 的调用中断。
at System.Net.Sockets.Socket.Accept()
at System.Net.Sockets.TcpListener.AcceptSocket()
at Xiaoxiao.Net.FTP.Server.FTP_Server.Run() in f:\vs_net\net\ftp\server\ftp_server.cs:line 236
//------------- function:Xiaoxiao.MHFTPServer.FTPServer.LoadSettings() 2003-7-29 12:37:03------------//


出错代码如下:


while(true)
{
// Check if maximum allowed thread count isn't exceeded
if(m_SessionTable.Count <= m_MaxThreads)
{

// Thread is sleeping, until a client connects
Socket clientSocket = FTP_Listener.AcceptSocket();

string sessionID = clientSocket.GetHashCode().ToString();

//****
_LogWriter logWriter = new _LogWriter(this.SessionLog);
FTP_Session session = new FTP_Session(clientSocket,this,sessionID,logWriter);

Thread clientThread = new Thread(new ThreadStart(session.StartProcessing));

// Add session to session list
AddSession(sessionID,session,logWriter);

// Start proccessing
clientThread.Start();
}
else
{
Thread.Sleep(100);
}
}
...全文
116 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ddy2000 2003-07-29
  • 打赏
  • 举报
回复
帮你顶
lookfeng 2003-07-29
  • 打赏
  • 举报
回复
这种情况主要出现在你牵制关闭了一个socket连接。
try
{
readnum = networkstream.Read (bytes,0,bytes.Length);
if (readnum == 0) throw new Exception("DUMP");
}
catch (Exception ec)
{
//引起异常情况:
//1、对方强制退出(还没来得及调用closesocket):System.Net.Sockets.SocketException:"远程主机强迫关闭了一个现有的连接。" 10054
//2、对方关闭socket连接:Socket.Read = 0
//3、对方发送数据后立即关闭socket连接,而自身又在收到对方数据后发送数据给对方:"您的主机中的软件放弃了一个已建立的连接。" 10053
//4、自身关闭socket:System.Net.Sockets.SocketException:"一个封锁操作被对 WSACancelBlockingCall 的调用中断。" 10004
//5、自身关闭socket:Socket.Read = 0
SocketException sockExcept = null;
if (ec.InnerException != null && ec.InnerException is SocketException)
sockExcept = ec.InnerException as SocketException;
if((ec.Message == "DUMP" && status != ClientStatus.logouted)|| (sockExcept != null && 10054 == sockExcept.ErrorCode) || (sockExcept != null && 10053 == sockExcept.ErrorCode))
{
CloseClient();
if (status == ClientStatus.logining)
{
OnError("服务器关闭了socket连接,连接已经断开。");
}
else if (status == ClientStatus.logined)
{
OnLogouted("服务器关闭了socket连接,连接已经断开。");
}
status = ClientStatus.logouted;
}
return;
}
chainet 2003-07-29
  • 打赏
  • 举报
回复
gz
cnhgj 2003-07-29
  • 打赏
  • 举报
回复
UP
brightheroes 2003-07-29
  • 打赏
  • 举报
回复
UP
panyee 2003-07-29
  • 打赏
  • 举报
回复
up
相关推荐
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2003-07-29 12:57
社区公告

让您成为最强悍的C#开发者