总是出现这个问题!代码如下,帮偶看下吧
public void Start()
{
if (!Active)
{
Active = true;
mainSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp );
IPEndPoint ipLocalEndPoint = new IPEndPoint(IPAddress.Any,8800);
mainSocket.Bind(ipLocalEndPoint);
mainSocket.Listen(5000);
mainSocket.Soc.BeginAccept(new AsyncCallback(AcceptCallback),mainSocket);//接收请求
}
}
// <summary>
/// BeginAccept回调函数
/// </summary>
/// <param name="ar">IAsyncResult实例</param>
public void AcceptCallback(IAsyncResult ar)
{
try
{
//得到客户端请求的套接字句柄
Socket listener = (Socket)ar.AsyncState;
Socket handler = listener.EndAccept(ar);
int nSoc = GetSocketIndex();
//开始接受来自该客户端的数据
handler.BeginReceive( state.buffer, 0, StateObject.BufferSize, SocketFlags.None,new AsyncCallback(ReceiveCallback), state);
}
catch(Exception err)
{
ApplicationLog.WriteError("TCP连接回调出错:" + err.Message);
}
//继续接受客户端
mainSocket.BeginAccept(new AsyncCallback(AcceptCallback),mainSocket);
}
一直出现“TCP连接回调出错:远程主机强迫关闭了一个现有的连接”的错误!为什么呀?
public void Start()
{
if (!Active)
{
Active = true;
mainSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp );
IPEndPoint ipLocalEndPoint = new IPEndPoint(IPAddress.Any,8800);
mainSocket.Bind(ipLocalEndPoint);
mainSocket.Listen(5000);
mainSocket.Soc.BeginAccept(new AsyncCallback(AcceptCallback),mainSocket);//接收请求
}
}
// <summary>
/// BeginAccept回调函数
/// </summary>
/// <param name="ar">IAsyncResult实例</param>
public void AcceptCallback(IAsyncResult ar)
{
try
{
//得到客户端请求的套接字句柄
Socket listener = (Socket)ar.AsyncState;
Socket handler = listener.EndAccept(ar);
int nSoc = GetSocketIndex();
//开始接受来自该客户端的数据
handler.BeginReceive( state.buffer, 0, StateObject.BufferSize, SocketFlags.None,new AsyncCallback(ReceiveCallback), state);
}
catch(Exception err)
{
ApplicationLog.WriteError("TCP连接回调出错:" + err.Message);
}
//继续接受客户端
mainSocket.BeginAccept(new AsyncCallback(AcceptCallback),mainSocket);
}
一直出现“TCP连接回调出错:远程主机强迫关闭了一个现有的连接”的错误!为什么呀?
public static ManualResetEvent allDone = new ManualResetEvent(false);
...
public void Start()
{
while(Active)
{
allDone.Reset();
mainSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp );
IPEndPoint ipLocalEndPoint = new IPEndPoint(IPAddress.Any,8800);
mainSocket.Bind(ipLocalEndPoint);
mainSocket.Listen(5000);
mainSocket.Soc.BeginAccept(new AsyncCallback(AcceptCallback),mainSocket);//接收请求
allDone.WaitOne();
}
}// <summary>
/// BeginAccept回调函数
/// </summary>
/// <param name="ar">IAsyncResult实例</param>
public void AcceptCallback(IAsyncResult ar)
{
allDone.Set();
try
{
//得到客户端请求的套接字句柄
Socket listener = (Socket)ar.AsyncState;
Socket handler = listener.EndAccept(ar);
int nSoc = GetSocketIndex();
//开始接受来自该客户端的数据
handler.BeginReceive( state.buffer, 0, StateObject.BufferSize, SocketFlags.None,new AsyncCallback(ReceiveCallback), state);
}
catch(Exception err)
{
ApplicationLog.WriteError("TCP连接回调出错:" + err.Message);
}
} // 只是大概改了一点,不知道你第几句出错,不好说。