在服务器端,维护一个上线主机列表,保存一个主机唯一标识uuid,连接id,状态。
想用stl来完成,但是没有接触过,求指导

解决方案 »

  1.   

    #include "stdafx.h"#include <iostream>
    #include <string.h>
    #include <map>
    #include <list>
    #include <vector>
    using namespace std;
    #define  MAX_NAME_LENGTH 64
    #define  MAX_PATH 260
    typedef struct NODE
    {
    char uuid[MAX_NAME_LENGTH]; //
    char FileName[MAX_PATH];    //远程文件的绝对路径
    char LocalFile[MAX_PATH]; //当前文件的觉得路径 long long size;
    long long downsize;
    int flag;
    int hostid; //连接 的id号,若为零,表示不在线

    }NODE;class CDownloadFileInfo
    {
    public:
    //DownlaodFile();
    CDownloadFileInfo();
    long long  getSize();
    void setSize(long long size); long long  getDownSize();
    void setDownSize(long long size); int  getFlag();
    void setFlag(int flag); int  getHostid();
    void setHostid(int hostid);
    int setFileName(char *name);
    int setUuid(char *uuid);
    int setLocalFile(char *name);

    char * getFileName();
    char * getUuid();
    char * getLocalFile();public:
       NODE file;};CDownloadFileInfo::CDownloadFileInfo()
    {
     memset(&file,0,sizeof(NODE));
     file.hostid = 0;//先初始化为没有连接
     file.flag = 0;
     file.size = 0;
     file.downsize = 0;
    }long long CDownloadFileInfo:: getSize()
    {
     return file.size;
    }void CDownloadFileInfo::setSize(long long size)
    {
    file.size = size;
    }long long CDownloadFileInfo:: getDownSize()
    {
    return file.downsize;
    }void CDownloadFileInfo::setDownSize(long long downsize)
    {
    file.downsize = downsize;
    }int CDownloadFileInfo::getFlag()
    {
     return file.flag;
    }void CDownloadFileInfo::setFlag(int flag)
    {
    file.flag = flag;
    }int CDownloadFileInfo::getHostid()
    {
    return file.hostid;
    }void CDownloadFileInfo::setHostid(int hostid)
    {
    file.hostid = hostid;
    }int CDownloadFileInfo::setFileName(char *name)
    {
    if (name == NULL)
    {
    return 0;
    }
    memcpy(file.FileName,name,strlen(name)+1);
    }int CDownloadFileInfo::setUuid(char *uuid)
    {
    if (uuid == NULL)
    {
    return 0;
    }
    memcpy(file.uuid,uuid,strlen(uuid)+1);
    }int CDownloadFileInfo::setLocalFile(char *name)
    {
    if (name == NULL)
    {
    return 0;
    }
    memcpy(file.LocalFile,name,strlen(name)+1);
    }char * CDownloadFileInfo::getFileName()
    {
    return file.FileName;
    }char * CDownloadFileInfo::getUuid()
    {
    return file.uuid;
    }char * CDownloadFileInfo::getLocalFile()
    {
      return file.LocalFile;
    }
    int main()
    {
    list<CDownloadFileInfo> listfile; CDownloadFileInfo file,file2;
    long long size = 34;
    file.setSize(0);
    file2.setSize(size); listfile.push_back(file);
    listfile.push_back(file2); list<CDownloadFileInfo>::iterator iter_file;
    cout << "list5: "<<endl; for (iter_file=listfile.begin();iter_file!=listfile.end();)
    {
    cout<<"ID:"<<iter_file->getSize()<<" Name:"<<endl;
    long long i = iter_file->getSize();
    if (i == 0)
    {
    iter_file = listfile.erase(iter_file);  
    //iter_file->setSize(234);
    }
    else
    {
    iter_file++;
    }
    } cout<<"after!!!"<<endl;
    for (iter_file=listfile.begin();iter_file!=listfile.end();iter_file++)
    {
    cout<<"ID:"<<iter_file->getSize()<<" Name:"<<endl;

    }
    getchar();
    return 0;}