[500送出]如何一次读入一个二进制文件的数据? 需要一次读入一个二进制文件的数据到byte数组,然后在其头部填上字符串.并用SOCKET发送掉 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 struct data{ CString str; //头 void* buf;};CFile打开文件时指定CFile::typeBinary |CFile::modeRead.然后将数据读到buf缓冲区中。发送可以用CSocket,他又串行化。很方便。 你先要知道字符串的长度, 比如strlenCString str = "head test";DWORD strlen = str.GetLength();CFile file("data.bin", CFile::modeRead);DWORD fileLen = file.GetLength();char *pBuf = new char[fileLen + strlen + 1];strcpy(pBuf, str);file.Read(pBuf+strlen+1, fileLen);file.Close();...pSocket->Send(pBuf, fileLen + strlen + 1); 不用那么麻烦,你可以利用Winsock2的TransmitFile()函数直接将文件及头部数据发送出去,这样非常高效 CString lpszFileName = "你的文件名";HANDLE m_hFile = CreateFile(lpszFileName, GENERIC_READ, FILE_SHARE_READ,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE)0);HANDLE m_hFileMapping = CreateFileMapping(m_hFile, NULL, PAGE_READONLY, 0, 0, NULL);BYTE *m_pFileData = (LPBYTE)MapViewOfFile(m_hFileMapping, FILE_MAP_READ, 0, 0, 0);在前面加字符串我的做法可不大好了int fileLen = GetFileLength(hFile);CString YourStr;BYTE *pByte = new Byte[fileLen+YourStr.GetLength()];memcpy(pByte, YouStr.GetBuffer(0), YourStr.GetLength());memcpy(pByte+YourStr, m_pFileData, fileLen);发送完后YouStr.ReleaseBuffer(); delete[] pByte; 远程控制系统的一个故障(急需解决) 感谢各级领导提鞋,散分 急急!,如何在ANSI环境下 只对某一函数使用unicode环境编译? MFC 两个简单的问题,各位帮忙看一下! 编译错误 请教! 初学者,求助!!关于cstdiofile文件读取及atoi转换的问题 寻找 MSDN 请问如何动态地为CEdit控件加上ES_PASSWORD风格??? OLE初始化失败 uft-8的方式进行 https 如何在窗体的文本框读入字符串,对其长度进行判断,并判断其有多少个字母,多少个数字? WaitForMultipleObjects怎样等待几个不同的句柄?
{
CString str; //头
void* buf;};
CFile打开文件时指定CFile::typeBinary |CFile::modeRead.然后将数据读到buf缓冲区中。发送可以用CSocket,他又串行化。很方便。
CString str = "head test";
DWORD strlen = str.GetLength();
CFile file("data.bin", CFile::modeRead);
DWORD fileLen = file.GetLength();
char *pBuf = new char[fileLen + strlen + 1];
strcpy(pBuf, str);
file.Read(pBuf+strlen+1, fileLen);
file.Close();
...
pSocket->Send(pBuf, fileLen + strlen + 1);
HANDLE m_hFile = CreateFile(lpszFileName, GENERIC_READ, FILE_SHARE_READ,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE)0);
HANDLE m_hFileMapping = CreateFileMapping(m_hFile, NULL, PAGE_READONLY, 0, 0, NULL);
BYTE *m_pFileData = (LPBYTE)MapViewOfFile(m_hFileMapping, FILE_MAP_READ, 0, 0, 0);在前面加字符串我的做法可不大好了
int fileLen = GetFileLength(hFile);
CString YourStr;
BYTE *pByte = new Byte[fileLen+YourStr.GetLength()];
memcpy(pByte, YouStr.GetBuffer(0), YourStr.GetLength());
memcpy(pByte+YourStr, m_pFileData, fileLen);
发送完后YouStr.ReleaseBuffer(); delete[] pByte;