WEB开发网
开发学院软件开发VC 点对点多线程断点续传的实现 阅读

点对点多线程断点续传的实现

 2010-01-09 20:31:56 来源:WEB开发网   
核心提示:下面先介绍sendrequest(int n),在开始前,点对点多线程断点续传的实现(4),向服务器发获得文件消息命令,以便让客 户端知道有哪些文件可传int cdownload::sendrequest(int n){//建套接 字sockaddr_in local;SOCKET m_socket;int rc=0;

下面先介绍sendrequest(int n),在开始前,向服务器发获得文件消息命令,以便让客 户端知道有哪些文件可传

int cdownload::sendrequest(int n)
{
  //建套接 字
  sockaddr_in local;
  SOCKET m_socket;
  int rc=0;
  //初使 化服务器地址
  local.sin_family=AF_INET;
  local.sin_port=htons(1028);
  local.sin_addr.S_un.S_addr=inet_addr(ip);
  m_socket=socket (AF_INET,SOCK_STREAM,0);

  int ret;
  //联接服务器
   ret=connect(m_socket,(LPSOCKADDR)&local,sizeof(local));
  //有错的话
   if(ret<0){
    AfxMessageBox("联接错误");
  closesocket (m_socket);
  return -1;
  }
  //初使化命令
  fileinfo fileinfo1;
  fileinfo1.len=n;
  fileinfo1.seek=50;
   fileinfo1.type=1;
  //发送命令
  int aa=sendn(m_socket,(char*) &fileinfo1,100);
  if(aa<0){
    closesocket(m_socket);
     return -1;
  }
  //接收服务器传来的信息
   aa=readn(m_socket, (char*)&fileinfo1,100);
  if(aa<0){
    closesocket(m_socket);
    return -1;
  }
  //关闭
  shutdown(m_socket,2);
   closesocket(m_socket);
  return 1;
}

有了文件消息后我们就可以下载文件 了。在主函数中,用法如下:

//下载第clno个文件,并为它建一个新cdownload类
down[clno]=new cdownload(clno);
//开始下载,并初使化
type=down[clno]- >startask(clno);
//建立各线程
createthread(clno);

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

Tags:线程 断点 实现

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