谁懂的,有相关的源代码吗?有的行行好。发我份。
要改善下我的程序,以应对在很多客户端的情况下,去接受保留套接字。
好人

解决方案 »

  1.   

    http://www.vckbase.com/document/viewdoc/?id=1856
      

  2.   

    我也想要,又也请给我一份,[email protected],谢谢
      

  3.   

    双向传输?单向传输(服务器->客户端||客户端->服务器)?带宽问题考虑到了?
      

  4.   

    双向传输 带宽是何意思?用的是TCP协议,程序能运行,传输也成功,就是现在不是用连接池的方法接受客户端的套接字的 ,客户端一多服务器CPU就会很高。听人说可以用连接池
      

  5.   

    双向传输:就是既可以从服务器端传输数据到客户端,也可以从客户端传输数据到服务器端
    带宽:在同一时间你传输数据量准定会有一个限制,就像你用的宽带,假设是2M的话那你同一时间传输的数据量不会超过2M说实话我也刚入门VC不久问你几个问题啊
    1.你说的客户端需要先连接到服务器端吗?还是不需要连接你有一个类似于列表的东西可以直接选的(比方说直接从数据库中提取)如果是不需要的话你整体的系统就变成了客户端(你所说的服务器端)->服务器端(原来的客户端)的架构了,这样的话我觉得直接用多线程就可以完成你要做的吧(可能线程数要相对多一些),传送的数据是固定的,客户端的地址信息什么的可以直接从队列里取().
    如果是需要的话,我猜想你的设计是:服务器端一旦接收到客户端请求就给客户端发送一个文件
    接收到请求后:你当然会用多线程来做,但是你在起线程前先判断一下是否有空闲的连接可以用,有的话就可以直接用这个连接来发送文件了,但是这么设计会有一个问题就是:发送数据时文件映射的次数, 也就是我在问题2里说的,所以我觉得你的设计应该是在确认连接到服务器端的客户端信息之后.再映射文件,最后依次发送给客户端.
    2.你是做文件传输,那你在传输数据的时候是每个线程里来完成文件映射再传送呢?还是先映射完了再发到每个线程里传输?
    3.是在一台电脑上做的测试吗?
    如果是一台的话我觉得还是可以接收"客户端一多服务器就CPU高"的问题
      

  6.   

    <!--发送端先发送文件列表(文件的大小和一些属性)给接收端-->
    发送端在这时候一定是新起一个线程吧,监听和接收发送不应该用同一个线程吧
    然后<!--发送端接受到消息后,创建发送线程-->
    这里你有必要再创建发送线程么?之前给接收端发送文件列表(文件的大小和一些属性)这个线程不可以继续用吗?因为你自己封装的消息已经包含了很多信息的啊一起等高手解答?
      

  7.   

    not so complex, search code on the website: www.codeproject.com
      

  8.   

    看看IOCP自然的就用到连接池了
      

  9.   

    给我一个邮箱,我学习IOCP时,编写过DEMO
      

  10.   

    程序片段
    for (i = 0;i<MAX_SOCKET_ACCEPT;i++)
    {
    SubmmitNewAccep();
    }
    void CVideoSockServer::SubmmitNewAccep()
    {
    CVideoSockeSend * pSend = new CVideoSockeSend[1];
    if(!pSend->InitClass())
    {
    GF_WriteLog("创建套接字失败,无法提交新的接收请求");
    return;
    }
    st_OverLapped * pOver = G_Memery.GetData();
    pOver->CMD = CMD_Accept;
    pOver->lpSockSend = pSend;
    AcceptEx(m_VideoSocketListen,pSend->GetSocket(),pOver->buff,0,sizeof(sockaddr_in)+16,sizeof(sockaddr_in)+16,NULL,(LPOVERLAPPED)&pOver->OverLapped);
    每一个客户接入后,再次投递。实际上由IOCP维护连接池}
      

  11.   

    GF_WriteLog( "创建套接字失败,无法提交新的接收请求 "); 
    后增加delete [] pSend;
      

  12.   

    why not queue rather than list?