通过TCP/IP 协议在服务器上记录本地计算机键盘敲击操作,并将记录信息用txt 形式保存下来。现在已经建立好连接并且可以通信。就是不知道用txt保存这一步怎么操作?哪位大神帮忙指导一下。能附上详细步骤更好。

解决方案 »

  1.   

    直接socket发送文件。客户端读取文件一块块数据发送给服务器
      

  2.   

    CFile::Open/Write/Close()操作文件,或者使用API CreateFile/WriteFile/CloseHandle()
      

  3.   

    说socket通讯的对象是byte数组
    怎么把数据保存到文本及采用什么格式,其实和socket没有太大关联
    自行把byte[]进行转换保存就可以
      

  4.   

    BCD转为ASC保存
      

  5.   

    通过setwindowhook 来监听键盘按键消息,用户如果有键盘按键就保存当前按键消息在内存中。达到一定数量后就发送给服务器。如果是想盗号之类的这种手段以及行不通了。
      

  6.   

    CFile::Open/Write/Close()操作文件,或者使用API CreateFile/WriteFile/CloseHandle()将内存写入文件。
      

  7.   

    //存储日志记录数据
    void SaveDataFile(char *str)
    {
    CTime ct=CTime::GetCurrentTime(); //获取程序所在文件夹下的日志记录文件
    char szPath[255],szLogPath[255],szFn[255];
    mGetSystemCurrentDirectory(szPath); sprintf(szLogPath,"%sErrData",szPath);
    if(access(szLogPath,0)==-1) CreateDirectory(szLogPath,NULL);
    sprintf(szFn, "%s\\Err%04d%02d%02d.Txt",szLogPath,ct.GetYear(),ct.GetMonth(),ct.GetDay()); FILE *fp;
    //检查数据文件是否存在?
    if(!access(szFn,0)) fp=fopen(szFn, "a"); else fp=fopen(szFn, "w");
    //存储日志数据。
    fprintf(fp, "%s\n", str);
    //关闭数据文件。
    fclose(fp);
    }
      

  8.   

    调用那个函数就行了。这还不简单。
    //取得当前目录
    void mGetSystemCurrentDirectory(char *curDir)
    {
    char szPath[255];
    char drive[_MAX_DRIVE];
    char dir[_MAX_DIR];
    char fname[_MAX_FNAME];
    char ext[_MAX_EXT];    GetModuleFileName(NULL, szPath, MAX_PATH);
    _splitpath( szPath, drive, dir, fname, ext );
    sprintf(curDir, "%s%s", drive, dir);
    if(curDir[strlen(curDir)-1]!='\\') strcat(curDir,"\\");
    }
      

  9.   

    问题不在于通讯,在于如何记录要记录的键盘信息是在你的程序下面还是任何系统下的操作都要记录都要记录就用钩子,按下一次你就发一个数据给服务器就好了。服务器组织成txt