客户端没用多线程,用的是CAsyncSocket类,自己定义了一个CMySocket类继承CAsyncSocket类,重载了OnReceive函数,在OnReceive中接受数据,代码如下:void CMySocket::OnReceive(int nErrorCode) { // TODO: Add your specialized code here and/or call the base class double data=0; long Size; long FileLength; long WriteOnce; int count=0; int ErrorNum=0; int RcvBuf=0; int RcvBufSize=sizeof(int); int i=0; if(SOCKET_ERROR==receiveSockets.Receive(&FileLength,sizeof(long))) { ErrorNum=GetLastError(); } Size=FileLength; while(Size>0) {
//设置接受缓冲区大小 if (getsockopt(receiveSockets,SOL_SOCKET,SO_RCVBUF,(char *)&RcvBuf,&RcvBufSize)!=SOCKET_ERROR) { if (RcvBuf<512) RcvBuf=512; setsockopt(receiveSockets,SOL_SOCKET,SO_RCVBUF,(char*)&RcvBuf,RcvBufSize); } //接收数据 if(SOCKET_ERROR==(WriteOnce=receiveSockets.Receive(&data,sizeof(double)))) { ErrorNum=GetLastError(); }
//存放信号样本点 if (!EnQueue(myQue,data)) { AfxMessageBox("add a data error\n"); } Size=Size-WriteOnce; } count=QueueLength(myQue); AfxMessageBox("信号接受完成"); CAsyncSocket::OnReceive(nErrorCode); }单步调试时程序能走到AfxMessageBox("信号接受完成");,但是正式运行是不会显示AfxMessageBox("信号接受完成");而且对话框界面按钮无法操作。请问前辈,是什么原因?
客户端没用多线程,用的是CAsyncSocket类,自己定义了一个CMySocket类继承CAsyncSocket类,重载了OnReceive函数,在OnReceive中接受数据,代码如下:void CMySocket::OnReceive(int nErrorCode) { // TODO: Add your specialized code here and/or call the base class double data=0; long Size; long FileLength; long WriteOnce; int count=0; int ErrorNum=0; int RcvBuf=0; int RcvBufSize=sizeof(int); int i=0; if(SOCKET_ERROR==receiveSockets.Receive(&FileLength,sizeof(long))) { ErrorNum=GetLastError(); } Size=FileLength; while(Size>0) {//设置接受缓冲区大小 if (getsockopt(receiveSockets,SOL_SOCKET,SO_RCVBUF,(char *)&RcvBuf,&RcvBufSize)!=SOCKET_ERROR) { if (RcvBuf<512) RcvBuf=512; setsockopt(receiveSockets,SOL_SOCKET,SO_RCVBUF,(char*)&RcvBuf,RcvBufSize); } //接收数据 if(SOCKET_ERROR==(WriteOnce=receiveSockets.Receive(&data,sizeof(double)))) { ErrorNum=GetLastError(); } //存放信号样本点 if (!EnQueue(myQue,data)) { AfxMessageBox("add a data error\n"); } Size=Size-WriteOnce; } count=QueueLength(myQue); AfxMessageBox("信号接受完成"); CAsyncSocket::OnReceive(nErrorCode); }单步调试时程序能走到AfxMessageBox("信号接受完成");,但是正式运行是不会显示AfxMessageBox("信号接受完成");而且对话框界面按钮无法操作。
客户端没用多线程,用的是CAsyncSocket类,自己定义了一个CMySocket类继承CAsyncSocket类,重载了OnReceive函数,在OnReceive中接受数据,代码如下:void CMySocket::OnReceive(int nErrorCode) { // TODO: Add your specialized code here and/or call the base class double data=0; long Size; long FileLength; long WriteOnce; int count=0; int ErrorNum=0; int RcvBuf=0; int RcvBufSize=sizeof(int); int i=0; if(SOCKET_ERROR==receiveSockets.Receive(&FileLength,sizeof(long))) { ErrorNum=GetLastError(); } Size=FileLength; while(Size>0) {//设置接受缓冲区大小 if (getsockopt(receiveSockets,SOL_SOCKET,SO_RCVBUF,(char *)&RcvBuf,&RcvBufSize)!=SOCKET_ERROR) { if (RcvBuf<512) RcvBuf=512; setsockopt(receiveSockets,SOL_SOCKET,SO_RCVBUF,(char*)&RcvBuf,RcvBufSize); } //接收数据 if(SOCKET_ERROR==(WriteOnce=receiveSockets.Receive(&data,sizeof(double)))) { ErrorNum=GetLastError(); } //存放信号样本点 if (!EnQueue(myQue,data)) { AfxMessageBox("add a data error\n"); } Size=Size-WriteOnce; } count=QueueLength(myQue); AfxMessageBox("信号接受完成"); CAsyncSocket::OnReceive(nErrorCode); }单步调试时程序能走到AfxMessageBox("信号接受完成");,但是正式运行是不会显示AfxMessageBox("信号接受完成");而且对话框界面按钮无法操作。
http://download.csdn.net/detail/geoff08zhang/4571358
客户端没用多线程,用的是CAsyncSocket类,自己定义了一个CMySocket类继承CAsyncSocket类,重载了OnReceive函数,在OnReceive中接受数据,代码如下:void CMySocket::OnReceive(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
double data=0;
long Size;
long FileLength;
long WriteOnce;
int count=0;
int ErrorNum=0;
int RcvBuf=0;
int RcvBufSize=sizeof(int);
int i=0;
if(SOCKET_ERROR==receiveSockets.Receive(&FileLength,sizeof(long)))
{
ErrorNum=GetLastError();
}
Size=FileLength;
while(Size>0)
{
//设置接受缓冲区大小
if (getsockopt(receiveSockets,SOL_SOCKET,SO_RCVBUF,(char *)&RcvBuf,&RcvBufSize)!=SOCKET_ERROR)
{
if (RcvBuf<512)
RcvBuf=512;
setsockopt(receiveSockets,SOL_SOCKET,SO_RCVBUF,(char*)&RcvBuf,RcvBufSize);
}
//接收数据
if(SOCKET_ERROR==(WriteOnce=receiveSockets.Receive(&data,sizeof(double))))
{
ErrorNum=GetLastError();
}
//存放信号样本点
if (!EnQueue(myQue,data))
{
AfxMessageBox("add a data error\n");
}
Size=Size-WriteOnce;
}
count=QueueLength(myQue);
AfxMessageBox("信号接受完成");
CAsyncSocket::OnReceive(nErrorCode);
}单步调试时程序能走到AfxMessageBox("信号接受完成");,但是正式运行是不会显示AfxMessageBox("信号接受完成");而且对话框界面按钮无法操作。请问前辈,是什么原因?
客户端没用多线程,用的是CAsyncSocket类,自己定义了一个CMySocket类继承CAsyncSocket类,重载了OnReceive函数,在OnReceive中接受数据,代码如下:void CMySocket::OnReceive(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
double data=0;
long Size;
long FileLength;
long WriteOnce;
int count=0;
int ErrorNum=0;
int RcvBuf=0;
int RcvBufSize=sizeof(int);
int i=0;
if(SOCKET_ERROR==receiveSockets.Receive(&FileLength,sizeof(long)))
{
ErrorNum=GetLastError();
}
Size=FileLength;
while(Size>0)
{//设置接受缓冲区大小
if (getsockopt(receiveSockets,SOL_SOCKET,SO_RCVBUF,(char *)&RcvBuf,&RcvBufSize)!=SOCKET_ERROR)
{
if (RcvBuf<512)
RcvBuf=512;
setsockopt(receiveSockets,SOL_SOCKET,SO_RCVBUF,(char*)&RcvBuf,RcvBufSize);
}
//接收数据
if(SOCKET_ERROR==(WriteOnce=receiveSockets.Receive(&data,sizeof(double))))
{
ErrorNum=GetLastError();
}
//存放信号样本点
if (!EnQueue(myQue,data))
{
AfxMessageBox("add a data error\n");
}
Size=Size-WriteOnce;
}
count=QueueLength(myQue);
AfxMessageBox("信号接受完成");
CAsyncSocket::OnReceive(nErrorCode);
}单步调试时程序能走到AfxMessageBox("信号接受完成");,但是正式运行是不会显示AfxMessageBox("信号接受完成");而且对话框界面按钮无法操作。
客户端没用多线程,用的是CAsyncSocket类,自己定义了一个CMySocket类继承CAsyncSocket类,重载了OnReceive函数,在OnReceive中接受数据,代码如下:void CMySocket::OnReceive(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
double data=0;
long Size;
long FileLength;
long WriteOnce;
int count=0;
int ErrorNum=0;
int RcvBuf=0;
int RcvBufSize=sizeof(int);
int i=0;
if(SOCKET_ERROR==receiveSockets.Receive(&FileLength,sizeof(long)))
{
ErrorNum=GetLastError();
}
Size=FileLength;
while(Size>0)
{//设置接受缓冲区大小
if (getsockopt(receiveSockets,SOL_SOCKET,SO_RCVBUF,(char *)&RcvBuf,&RcvBufSize)!=SOCKET_ERROR)
{
if (RcvBuf<512)
RcvBuf=512;
setsockopt(receiveSockets,SOL_SOCKET,SO_RCVBUF,(char*)&RcvBuf,RcvBufSize);
}
//接收数据
if(SOCKET_ERROR==(WriteOnce=receiveSockets.Receive(&data,sizeof(double))))
{
ErrorNum=GetLastError();
}
//存放信号样本点
if (!EnQueue(myQue,data))
{
AfxMessageBox("add a data error\n");
}
Size=Size-WriteOnce;
}
count=QueueLength(myQue);
AfxMessageBox("信号接受完成");
CAsyncSocket::OnReceive(nErrorCode);
}单步调试时程序能走到AfxMessageBox("信号接受完成");,但是正式运行是不会显示AfxMessageBox("信号接受完成");而且对话框界面按钮无法操作。
{
public:
static LogFile &instance();
operator FILE *() const { return m_file; }
private
LogFile(const char *filename)
{
m_file = fopen(filename, "a+");
}
~LogFile()
{
fclose(m_file);
}
FILE *m_file;
};LogFile &LogFile::instance()
{
static LogFile log("AppLog.txt");
return log;
}用的时候可以这么写:
fwrite("abc", 1, 3, LogFile::instance());
看注册时间就知道你是我前辈!