怎么用txt格式保存在MFC网络通信上的操作 通过TCP/IP 协议在服务器上记录本地计算机键盘敲击操作,并将记录信息用txt 形式保存下来。现在已经建立好连接并且可以通信。就是不知道用txt保存这一步怎么操作?哪位大神帮忙指导一下。能附上详细步骤更好。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 直接socket发送文件。客户端读取文件一块块数据发送给服务器 CFile::Open/Write/Close()操作文件,或者使用API CreateFile/WriteFile/CloseHandle() 说socket通讯的对象是byte数组怎么把数据保存到文本及采用什么格式,其实和socket没有太大关联自行把byte[]进行转换保存就可以 BCD转为ASC保存 通过setwindowhook 来监听键盘按键消息,用户如果有键盘按键就保存当前按键消息在内存中。达到一定数量后就发送给服务器。如果是想盗号之类的这种手段以及行不通了。 CFile::Open/Write/Close()操作文件,或者使用API CreateFile/WriteFile/CloseHandle()将内存写入文件。 //存储日志记录数据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);} 调用那个函数就行了。这还不简单。//取得当前目录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,"\\");} 问题不在于通讯,在于如何记录要记录的键盘信息是在你的程序下面还是任何系统下的操作都要记录都要记录就用钩子,按下一次你就发一个数据给服务器就好了。服务器组织成txt 问个概念性问题,大家看看我的理解对不对。 动态创建Tab标签 有没有这样的函数,复制字符串后,得到字符串后面的地址? MFC数据库问题 (狂散100分,UP有分)问题:各位程序员,你好,你所在公司软件人员多少?是否在执行软件工程?你对软件工程认识是?月薪? 如何完成窗口更新? Tree控件的问题 动态链接库问题 请给初学者一点帮助!!! 帮帮小弟我 surface 平板输入法 如何支持 WM_TOUCH 触摸消息 关于MFC的 SetFocus函数问题
怎么把数据保存到文本及采用什么格式,其实和socket没有太大关联
自行把byte[]进行转换保存就可以
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);
}
//取得当前目录
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,"\\");
}