本帖最后由 zdczdcc 于 2014-05-17 16:17:45 编辑

解决方案 »

  1.   

    public IAsyncResult BeginAccept (AsyncCallback callback,Object state)
    Lambda好像和匿名方法差不多。 asyncResult是个形参。
      

  2.   

    这其实跟注册一个事件是一样的意思,都是注册委托方法给 serverSocket。然后当回调此(第一个参数表示的delegate)方法时,传递了一个参数,它的参数名字叫做 asyncResult。实际上匿名委托,就是类似这样的委托                serverSocket.BeginAccept(MyProc, null);public void MyProc(asyncResult)
                    {
                        Socket clientSocket = serverSocket.EndAccept(asyncResult);
                        AsyncReceive(clientSocket);
                        AsyncAccept(serverSocket);
                    }
    这不过是把这个形式精简了,叫做匿名委托。因此首先你要懂得“委托”的概念,然后才能懂得当“宿主”回调委托方法时的参数传送。
      

  3.   

    实际上,我不建议使用socket类。因为这是很低级的东西,是用来跟linux之类的系统相兼容的东西。如果你是一个.net程序员,你应该习惯使用TcpListener、TcpClient等类型,而不是低级的Socket。这高级的类,并不是直接调用低级的Socket类的,而是直接封装windows api中的IOCP机制的。因此使用TcpListner的人跟使用Socket类的人的系统不可同日而语,不是说越是使用低级的东西就好像越了解通讯。使用Socket类的人根本不太懂得用到IOCP,使用TcpListener的人才懂得去使用windows的IOCP机制!
      

  4.   

    是不是这个意思,BeginAccept方法产生了一个asyncResult,然后回调delegate时将那个asyncResult传给delegate;
    还想请问为什么会有delegate,是不是向接口一样实现多态,提高重用,看网上很多说delegate类似于函数指针,可我觉得更像是对一个“类型”的函数的抽象
      

  5.   

    十分感谢,我是学生,正在学.Net,看博客时看见了Socket编程,就想学习下,回头会看看TcpListener等相关的博客,谢谢
      

  6.   

    TcpListener、TcpClient只是为了方便使用,对Socket进行了简单的封装,并不是封装IOCP什么的,可以直接Reflector代码出来看,要想实现IOCP和高性能的Socket,还是的自己使用Socket类和SAE进行开发。
      

  7.   

    sp解释下啊,starts是个站长好像也很牛的样子