110,567
社区成员
发帖
与我相关
我的任务
分享
public static void OnDataReceived(IAsyncResult asyn)
{
SocketUser theUser = (SocketUser)asyn.AsyncState;
try
{
if (theUser.CurrentSocket == null)
{
// logger.Error("socket is null ");
return;
}
int iRx = theUser.CurrentSocket.EndReceive(asyn); //接收到的消息长度
if (iRx == 0)
{
// logger.Error("没有接收的数据,断开tcp连接");
throw new SocketException(10054);
}
//提取有效字节数据
byte[] data = new byte[iRx];
byte[] buff = theUser.DataBuffer;
for (int i = 0; i < iRx; i++)
{
data[i] = buff[i];
}
//数据处理
ProcessReceiveData(theUser, data);
//继续等待数据
if (isExit == false)
{
WaitForData(theUser);
}
}
catch (ObjectDisposedException ode)
{
// logger.Error("数据处理异常2" + ode.ToString());
}
catch (SocketException se)
{
if (se.ErrorCode == 10054)
{
// logger.Error("Tcp连接被关闭 " + se.Message);
ClientDisConnect(theUser);
}
else
{
// logger.Error("数据处理异常3" + se.ToString());
}
}
}
int iRx = theUser.CurrentSocket.EndReceive(asyn); //接收到的消息长度
if (iRx == 0)
{
// logger.Error("没有接收的数据,断开tcp连接");
throw new SocketException(10054);
}
//提取有效字节数据
byte[] data = new byte[iRx];
byte[] buff = theUser.DataBuffer;
for (int i = 0; i < iRx; i++)
{
data[i] = buff[i];
}
public static void Send(byte[] buffer)
{
try
{
//目标地址
IPEndPoint ip = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 3001);
//发送通信socket
Socket sk = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sk.Connect(ip);//连接
sk.Send(buffer);//发送
SocketUser su = new SocketUser();
su.CurrentSocket = sk;
su.DataBuffer = buffer;
//异步接收
asyncCallBack = new AsyncCallback(OnDataReceived);//这里是什么意思???给客户端发送数据添加异步接收监听????
sk.BeginReceive(su.DataBuffer, 0, su.DataBuffer.Length, SocketFlags.None, asyncCallBack, su);
}
catch (Exception ex)
{
string msg = ex.ToString() + " " + DateTime.Now.ToString();
// logger.Debug(msg);
}
}