我建立了一个socket通信的进程,然后我想在这个进程中添加把Socket接收的数据保存到Excel文件中的功能。
但是我发现就是没法在这个进程中建立Excel文件,大家是高手,帮忙看看是怎么回事?谢谢
这是Socket通信部分部分代码:
UINT Recvdata(LPVOID pParam)
{
//监听DSP数据的线程
CNetWatcherViewerDoc* pDoc=(CNetWatcherViewerDoc*) pParam;
WORD wVersionRequested;
WSADATA wsaData;
SOCKET stcp;
SOCKET stcpactive;
struct sockaddr_in sin1;
UINT i,j,size;
BOOL flag = TRUE;
UINT channelID,recvdatalen;
UINT channelflag;
int *ptmp;
//CString   str; TrgRecvRestart: wVersionRequested = MAKEWORD(1, 1);
i = WSAStartup(wVersionRequested, &wsaData);
if (i != 0){
AfxMessageBox("unable to initialize WinSock for host info");
return 0;
} stcp = socket(AF_INET, SOCK_STREAM, 0);//IPPROTO_TCP
if( stcp < 0 ){
goto leave;
} // Create the main TCP listen socket
stcp = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//IPPROTO_TCP
if( stcp < 0 ){
goto leave;
} // Set Port = IMGPORT, leaving IP address = Any
memset(&sin1, 0, sizeof(sin1));
sin1.sin_addr.s_addr = INADDR_ANY;
sin1.sin_family = AF_INET;
sin1.sin_port = htons(DATAPORT); // Bind socket
if ( bind( stcp, (struct sockaddr*) &sin1, sizeof(sin1)) < 0){
goto leave;
} // Start listening
if ( listen( stcp, 1) < 0){
goto leave;
} // Run until task is destroyed by the system

int cnt;
size = sizeof( sin1 );
stcpactive = accept( stcp, (struct sockaddr*)&sin1, (int*)&size ); if( stcpactive == INVALID_SOCKET){
goto leave;
} while(1){ i = 0;
while( i < 4){
cnt = recv( stcpactive, (char*)&channelID+i, 4-i, 0 );
if( cnt <=0)
goto leave;
i += cnt;
if( i == 4){
channelflag = channelID;
}
} i = 0;
while( i < 4){
cnt = recv( stcpactive, (char*)&recvdatalen+i, 4-i, 0 );
if( cnt <=0)
goto leave;
i += cnt;
}
if(channelflag>8){
pDoc->m_iFftDatalen[channelflag-8] = recvdatalen;
recvdatalen *= 4;
}
else{
pDoc->m_iOrgDatalen[channelflag-1] = recvdatalen;
recvdatalen *= 4;
} i = 0;
while( i < recvdatalen ){
cnt = recv( stcpactive, (char*)precvbuf+i, recvdatalen-i, 0 );

if( cnt <= 0 )
goto leave;
i += cnt;
if(i == recvdatalen){
//
switch(channelflag){
case 1:
ptmp = precvbuf;
pDoc->m_uiShowType[0] = 1;
for( j=0; j<recvdatalen; j++){
*(pChannel1_Buf+j) = *(ptmp+j);

}
break;
case 2:
ptmp = precvbuf;
pDoc->m_uiShowType[1] = 1;
for( j=0; j<recvdatalen; j++){
*(pChannel2_Buf+j) = *(ptmp+j);
}
break;
leave:
// We only get here on an error - close the sockets
if( stcp >= 0 ){
closesocket(stcp);
} WSACleanup();goto TrgRecvRestart; return 0; 
}这是建立Excel文件的程序:
怎么添加??
//创建Excel 2000服务器(启动Excel) 
if (!ExcelApp.CreateDispatch("Excel.Application",NULL)) 

AfxMessageBox("创建Excel服务失败!"); 
exit(1);