C# SOCKET 异步通信 远程主机强制关闭现有的连接
C#SOCKET异步通信,但是执行到这个函数的时候总是会弹出弹窗:‘远程主机强制关闭现有的连接’,请教一下,这种情况应该如何处理?protectedvirtualvoid...
C# SOCKET异步通信,但是执行到这个函数的时候总是会弹出弹窗:‘远程主机强制关闭现有的连接’,请教一下,这种情况应该如何处理?
protected virtual void AcceptConn(IAsyncResult iar)//服务端与客户端的连接函数
{
try
{
Socket oldserver = (Socket)iar.AsyncState;
Socket client = oldserver.EndAccept(iar);
StatusChange();
System.Timers.Timer timer3 = new System.Timers.Timer(240000);
timer3.Elapsed += new System.Timers.ElapsedEventHandler(delegate { if (client.Connected) { CloseClient(client, Session.ExitType.NormalExit); }});
timer3.AutoReset = false;
timer3.Enabled = true;
Session newSession = new Session(client); client.BeginReceive(_recvDataBuffer, 0, _recvDataBuffer.Length, SocketFlags.None, new AsyncCallback(ReceiveData), client);
if (ClientConn != null)//ClientConn为连接事件
{
ClientConn(this, new NetEventArgs(newSession));
}
//继续接受客户端
_svrSock.BeginAccept(new AsyncCallback(AcceptConn), _svrSock);
}
catch (Exception exp)
{
MessageBox.Show("AcceptConn函数有误" + exp.Message);
_svrSock.BeginAccept(new AsyncCallback(AcceptConn), _svrSock);//这句不知道加上去对不对?
}
} 展开
protected virtual void AcceptConn(IAsyncResult iar)//服务端与客户端的连接函数
{
try
{
Socket oldserver = (Socket)iar.AsyncState;
Socket client = oldserver.EndAccept(iar);
StatusChange();
System.Timers.Timer timer3 = new System.Timers.Timer(240000);
timer3.Elapsed += new System.Timers.ElapsedEventHandler(delegate { if (client.Connected) { CloseClient(client, Session.ExitType.NormalExit); }});
timer3.AutoReset = false;
timer3.Enabled = true;
Session newSession = new Session(client); client.BeginReceive(_recvDataBuffer, 0, _recvDataBuffer.Length, SocketFlags.None, new AsyncCallback(ReceiveData), client);
if (ClientConn != null)//ClientConn为连接事件
{
ClientConn(this, new NetEventArgs(newSession));
}
//继续接受客户端
_svrSock.BeginAccept(new AsyncCallback(AcceptConn), _svrSock);
}
catch (Exception exp)
{
MessageBox.Show("AcceptConn函数有误" + exp.Message);
_svrSock.BeginAccept(new AsyncCallback(AcceptConn), _svrSock);//这句不知道加上去对不对?
}
} 展开
展开全部
你试试给服务端单独开辟一个线程,让它一直监听有没有客户端的连接..
记得检查端口号什么的对不对,还有防火墙是否允许该端口通过之类的..
记得检查端口号什么的对不对,还有防火墙是否允许该端口通过之类的..
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
客户端是你写的吗,是不是客户端真的把链接关掉了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你服务端的监听打开了没?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询