WEB开发网
开发学院软件开发VC 基于select I/O模型的远程目录浏览与多线程文件下... 阅读

基于select I/O模型的远程目录浏览与多线程文件下载

 2007-03-17 22:00:56 来源:WEB开发网   
核心提示: 另外, 线程写入的数据要及时刷新文件流,否则, 程序等到缓冲区满时才真正写入文件的, 结果就是文件乱七八糟了,基于select I/O模型的远程目录浏览与多线程文件下载(4),5双循环程序这个问题是在这个项目编程遇到的.双循环的程序如下:CString strArray[6];char*

另外, 线程写入的数据要及时刷新文件流。否则, 程序等到缓冲区满时才真正写入文件的, 结果就是文件乱七八糟了。

5 双循环程序

这个问题是在这个项目编程遇到的.双循环的程序如下:

  CString strArray[6];
  char* pChar = "abc1|abc2|abc3|ac";
  int len = strlen( "abc1|abc2|abc3|ac" );
  int i=0,j=0;
  while( i<= len && j<=6 )
  {
    int k = 0;
    while( pChar[i]!='|' )
    {
      strArray[j].Insert( k, pChar[i] );
      i++;
      k++;
    }
    i++;
    j++;
  }

调试的时候, i>len程序像得了疯牛病一样还是往前跑, 不会停下来。要确保正确性, 内循环应该修改如:

while( pChar[i]!='|' && i<=len )

6  memcpy预分配空间

在程序中对全局变量已经分配了一次空间char[2000], 在后续的使用中程序不会有问题, 但当整个程序关闭时却冒出一个提示框说程序遇到一个问题需要关闭。把后续使用memcpy对这个变量赋值时, 如果小于1993个char空间就不会出现前面说到的提示框。

后来试着在第二次使用时再次给该变量分配了一次空间, 之后一切正常了。不知何解, 睇来memcpy的确不是安全的东西。

三 重要程序说明:

1 select I/O模型框架

select I/O模型对于大访问量的网络特别有效。 在服务器端, 可以建立多个线程, 每个线程创建可同时创建一个读写fd_set。 fd_set的默认大小为64, 即在默认的情况下一个Set最多可以接受64个socket的连接。

上一页  1 2 3 4 5 6 7  下一页

Tags:基于 select 模型

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接