private void ReadCallBack(IAsyncResult ar)
{
var state = (StateObject) ar.AsyncState;
if ((state.Client == null) || (!state.Client.Connected))
return;
var networkStream = state.Client.GetStream();
try
{
var number= networkStream.EndRead(ar);
state.BytesRead += number;
if (number > 0)
{
var by = new byte[number];
Array.Copy(state.Buffer, 0, by, 0, number);
Rec(by);//这个是一个处理服务器传回的数据,
networkStream.BeginRead(state.Buffer, 0, StateObject.BufferSize, ReadCallBack, state);
}
else
{
networkStream.Close();
state.Client.Close();
}
}
catch (Exception)
{
//_tcp1.Close();
//_networkStream.Close();
}
}
private void AsynRead(TcpClient tcpClient)
{
var state = new StateObject {Client = tcpClient};
var stream = tcpClient.GetStream();
if (stream.CanRead)
{
try
{
var ar = stream.BeginRead(state.Buffer, 0, StateObject.BufferSize, ReadCallBack, state);
}
catch (Exception)
{
// ignored
}
}
}
private void ConnectCallBack(IAsyncResult ar)
{
AllDone.Set();
var t = (TcpClient) ar.AsyncState;
try
{
t.EndConnect(ar);
}
catch (Exception)
{
// ignored
}
}