日期:2014-05-18  浏览次数:20707 次

继续socket问题
如何在接受到数据的时候触发一个方法,不接受的时候不触发

------解决方案--------------------
private static ManualResetEvent RecvDataEvent = new ManualResetEvent(false);
private int recvlength;

private void Accept()
{
Socket sock;
byte[] data = new byte[1024];
recvlength = 0;
// 连接上服务器,这里略
// 开始while
while(true)
{
RecvDataEvent.Reset();
data = new byte[1024];
sock.BeginReceive(data,0,data.Length,SocketFlags.None,new AsyncCallback(EndReceiveCallback),sock); // 异步接收
RecvDataEvent.WaitOne(); // 等待服务器发送
// 接收完毕,写你自己的方法
}
}

private void EndReceiveCallback(IAsyncResult ia)
{
Socket sock = (Socket)ia.StateObjet;
recvlength = sock.EndReceive(ia);
RecvDataEvent.Set();
}