通过IP多播技术发送一个Excel文件给特定的多播组成员 想实现多播组中发送一个Excel文件和一个标准为用来确定多播组中的哪一个成员应该接受这个Excel。只发送简单的信息的多播程序可以实现,但发送一个完整Excel(大小有几百KB)该如何实现,还望各位高手指点一下,实现的思路是什么,主要是如何读取这个选定的Excel文件并发送,接收端如何接受这个发送过来的数据。谢谢大家了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 按二进制读取并发送,这有组播的例子SntpClnt:http://download.csdn.net/detail/geoff08zhang/4571358 我的发送函数如下:{CFileDialog filedlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,"Worksheet Files (*.xls)|*.xls|All Files (*.*)|*.*||",NULL); filedlg.m_ofn.lpstrTitle="选择导入文件清单";//弹出的对话框的标题 CString sFile; TCHAR szFilePath[MAX_PATH+1]; GetModuleFileName(NULL,szFilePath,MAX_PATH); (_tcsrchr(szFilePath,_T('\\')))[1]=0; sFile=szFilePath; sFile=sFile+"分支连接关系表.txt"; filedlg.m_ofn.lpstrInitialDir=sFile; if(filedlg.DoModal()==IDOK) { CString filename; filename=filedlg.GetPathName(); CFile file(filename,CFile::modeRead|CFile::shareDenyWrite); byte *buffer=NULL; long count=file.GetLength();//得到文件以字节为单位的大小 buffer= new byte[count];//申请内存区域用于读取的文件内容的存放 file.Read(buffer,count);//读取文件中的内容 int nReturnCode = sendto(m_hGroupSocket, (char*)&buffer,count, 0, (sockaddr*)&srcaddr, sizeof(sockaddr)); if(nReturnCode == SOCKET_ERROR){ AfxMessageBox("Error in send packets to the network!\n"); return ; } file.Close();//发送问文件以后关闭文件 } }接收函数如下: byte *buffer=NULL; buffer= new byte[1024*3]; int nAddrLen=sizeof(From);int nRet=recvfrom(m_hGroupSocket,(char*)&buffer, 1024*3,0,(sockaddr*)&From,&nAddrLen); CFile m_file; CString tt=_T("D:\\连接关系表.txt"); if(m_file.Open(tt,CFile::modeWrite|CFile::modeCreate)==FALSE) { AfxMessageBox("Failed to open the file!"); m_file.Close(); } m_file.Write(buffer,1024); m_file.Close();//将接收到的文件写入新文件发送的是1KB的TXT文件,接收缓冲区比发送缓冲区大,可以接收到正确的文件但是会弹出异常 First-chance exception in XXX.exe (KERNEL32.DLL): oxcoooooo5 Access Violation问题出在接收函数上 因为我把接收函数的recvfrom()注释掉就不会有这个问题 但是不知道该如何解决 请帮忙看一下吧 麻烦您了 vc中备份还原数据库的问题 已经实现了灰掉WORD另存为菜单,但还有个问题 如何判断查询数据没有 如何在A软件关闭之前,启动B软件 微软的Soap Toolkit是免费的么? 如何取得一个Process下面的资源句柄? 救命呀:用MFC写了个短信接收的Activex控件,在delphi下不出错,但在vb下使用出错 高分请问做网络编程的待遇是不是很底 50分急问: 关于 VC 6 项目移植到 VC.NET 后出的问题 送分 !求助!关于CString 对象放到结构体里......... LIB链接错误 CGridCtrl如何使单元格单击直接可编辑
http://download.csdn.net/detail/geoff08zhang/4571358
CFileDialog filedlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,"Worksheet Files (*.xls)|*.xls|All Files (*.*)|*.*||",NULL);
filedlg.m_ofn.lpstrTitle="选择导入文件清单";//弹出的对话框的标题
CString sFile;
TCHAR szFilePath[MAX_PATH+1];
GetModuleFileName(NULL,szFilePath,MAX_PATH);
(_tcsrchr(szFilePath,_T('\\')))[1]=0;
sFile=szFilePath;
sFile=sFile+"分支连接关系表.txt";
filedlg.m_ofn.lpstrInitialDir=sFile;
if(filedlg.DoModal()==IDOK)
{
CString filename;
filename=filedlg.GetPathName();
CFile file(filename,CFile::modeRead|CFile::shareDenyWrite);
byte *buffer=NULL;
long count=file.GetLength();//得到文件以字节为单位的大小
buffer= new byte[count];//申请内存区域用于读取的文件内容的存放
file.Read(buffer,count);//读取文件中的内容
int nReturnCode = sendto(m_hGroupSocket, (char*)&buffer,count, 0,
(sockaddr*)&srcaddr, sizeof(sockaddr));
if(nReturnCode == SOCKET_ERROR){
AfxMessageBox("Error in send packets to the network!\n");
return ;
}
file.Close();//发送问文件以后关闭文件
}
}
接收函数如下:
byte *buffer=NULL;
buffer= new byte[1024*3];
int nAddrLen=sizeof(From);
int nRet=recvfrom(m_hGroupSocket,(char*)&buffer, 1024*3,0,(sockaddr*)&From,&nAddrLen);
CFile m_file;
CString tt=_T("D:\\连接关系表.txt");
if(m_file.Open(tt,CFile::modeWrite|CFile::modeCreate)==FALSE)
{
AfxMessageBox("Failed to open the file!");
m_file.Close();
}
m_file.Write(buffer,1024);
m_file.Close();//将接收到的文件写入新文件发送的是1KB的TXT文件,接收缓冲区比发送缓冲区大,可以接收到正确的文件但是会弹出异常
First-chance exception in XXX.exe (KERNEL32.DLL): oxcoooooo5 Access Violation
问题出在接收函数上 因为我把接收函数的recvfrom()注释掉就不会有这个问题 但是不知道该如何解决 请帮忙看一下吧 麻烦您了