private void Listen()
  {
  _socket.Bind(_ipPoint);
  _socket.Listen(200);
  while (IsExit)
  {
  allDone.Reset();
  _socket.BeginAccept(new AsyncCallback(ReadCallBack), _socket);
  allDone.WaitOne();
  }
  }  private void ReadCallBack(IAsyncResult ar)
  {
  Socket socket = (Socket)ar.AsyncState;
  Socket ClientSocket = socket.EndAccept(ar);
  allDone.Set();
  }
如果用socket.Receive 方法只能接收byte数组。想请问下在如何用回调的方法来接收客户端发过来的数据流(长连接) 例:  NetworkStream stream = new NetworkStream(ClientSocket, true);
  BinaryReader br = new BinaryReader(stream);现在用while方法太占用资源。可不可以用类似于 socket.Receive里回调的方法实现?

解决方案 »

  1.   

    网络上传输的是字节数组,虽然微软对TCP这种带有长连接性质的传输提供了NetworkStream的流处理,但是不建议高级应用中使用,因为虽然它视为流处理了,但是并不能像流那样工作,出了问题很难排查,传输过程中也很难控制,只能用在简单的用途。
    所以你还是使用Socket的字节传输吧,如果不从实际出发,一味追求简单化,不从底层传输原理考虑,是写不好程序的。