本帖最后由 shigaofei1 于 2011-10-09 14:38:01 编辑

解决方案 »

  1.   

    我计划使用4条辅助线程和一个主进程 写一个 小的服务器
    第一条用来 接受新连接
    第二条用来 处理逻辑
    第三条用来 发送
    第四条用来 接受于是在第一关Accept上就遇到了以上的问题,虽然以前也尝试写过,但是效率 非常低,而且也忘得差不多了,请教,在这方面比较懂的达人帮帮忙!
      

  2.   

    1.BeginAccept和EndAccept是配对用的。
    2。对,每个用户维护一个socket连接
    3。同步也能实现循环,只不过效率低。第一条用来 接受新连接
    第二条用来 处理逻辑
    第三条用来 发送
    第四条用来 接受
       
    看来你弄混了。 看看接受的情况(发送同里)。假设已有了两个socket连接。
    void OnConnectRequest(...)
    {
       .....
        mySocket.BeginReceive(this.Buffer, 0, BufferSize, SocketFlags.None, GetrecieveData, null);
       .....
    }void GetrecieveData(IAsyncResult ar)
    {
        //数据处理。 这并不意味着你用同一个线程进行mySocket1,mySocket2的数据处理。这只是个函数,每个调用系统都会分配独立的栈的,对于所有的socket的回调来说都是独立的(不靠率lock的情况)
    }
      

  3.   

    一个连接一个Socket那一千个就要有一千个Socket对象,这难道不会 很消耗资源吗?
    但从这方面来看的话 .net 的网络方面效率 也不会太高啊?我是希望吧整个流程 做成像流水线一样的,
    第一步,第二步,第三步
     
    步步清晰明了Client对象集合就像是产品,也是按照顺序一个个进行处理
    发送的方法和接收的方法我希望像机器一样,用的都是同一台机器,只是产品略有一点点差异
    或者就是做成 静态的专门有个发送器根据每个Client对象所携带的IP等进行发送?这样不行吗?如果不行的话,也太那个什么了吧?
    你说呢但是,从上面你的回答来看 好像要做到以上几点貌似很难啊
    .net 的原装 异步 Socket 给我的感觉就一个 “乱”!
    愁死我了
      

  4.   

    算了,该死的,自己研究 win32 socket2 去了
    .net socket 也不见得 那么好用