tcp 远程主机强迫关闭了一个现有的连接 EndAcceptTcpClient

xiaoheiyu333 2016-12-13 10:38:44
使用C# 采用异步连接方式进行通信,服务器端抛出异常 代码如下 ,求大神
private void HandleTcpClientAccepted(IAsyncResult ar)
{
try
{

if (IsRunning)
{
TcpListener tcpListener = (TcpListener)ar.AsyncState;

/*抛出异常 远程主机强迫关闭了一个现有的连接 然后客户端就无法向服务器进行连接操作了 */
TcpClient tcpClient = tcpListener.EndAcceptTcpClient(ar);

byte[] buffer = new byte[tcpClient.ReceiveBufferSize];

TcpClientState internalClient= new TcpClientState(tcpClient, buffer);
lock (this.clients)
{
this.clients.Add(internalClient);
RaiseClientConnected(tcpClient);
}

NetworkStream networkStream = internalClient.NetworkStream;
networkStream.BeginRead(internalClient.Buffer,0,internalClient.Buffer.Length,HandleDatagramReceived,internalClient);
tcpListener.BeginAcceptTcpClient(new AsyncCallback(HandleTcpClientAccepted), ar.AsyncState);
}
}
catch (Exception ex)
{
}
}
...全文
491 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
BXS_null 2018-06-04
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
怎么了?这在 Release 运行时不是很正常的吗。假设随时你把网线拔断,就可以重复这个故障。你发一个帖子的目的是什么呢?照抄代码?那么你先把自己的一点点设计说出来,再来问别人“求代码”。
又遇到了一个问题 tcp链接提示远程主机不存在或拒绝访问,只能链接127.0.0.1,自己的内网ip也不能链接,外网更不用说了,这是啥问题,我的防火墙是关闭了,能正常访问服务器,iis发布也能访问(我自己的帖子回复不了了)
xian_wwq 2016-12-13
  • 打赏
  • 举报
回复
网络中断是socket通讯中很常见的问题 client中断后,再次发起连接就可以了。 除非accept逻辑写的有问题,无法再接收accept请求。
  • 打赏
  • 举报
回复
怎么了?这在 Release 运行时不是很正常的吗。假设随时你把网线拔断,就可以重复这个故障。你发一个帖子的目的是什么呢?照抄代码?那么你先把自己的一点点设计说出来,再来问别人“求代码”。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧