我这里借用的一个邮件发送程序(公司内网)时,碰到一个问题,在安装了VC++编译器的机器上发送邮件时,可以发送成功,
但是在没VC环境的机器上邮件就发送不出去了,我在静态库下编译的程序,相关部分代码如下:int er; // 接受send或receive的返回值 //发送helo命令
er = sock->Send(serv,serv.GetLength(),0);
if(!IsSocketError(er)) // 判断发送helo命令是否成功
{
return FALSE;
} //成功返回250
int nthis = 0; // 本次接受到的字节数
int nthisRec = 0; // 还应接受多少字节数
char* receiv = NULL;
receiv = new char[350]; // 申请接受ehlo命令后的响应信息空间
char* Lprec = NULL;
Lprec = receiv;
er = sock->Receive(receiv, 350, 0);
if(!IsSocketError(er)) // 判断接受信息是否成功
{
return FALSE;
}
AfxMessageBox(receiv); // 查看接收到的信息 receiv += er;
while(er < 335) // 接受的信息不够,循环进行接受
{
nthisRec = 350 - er;
nthis = sock->Receive(receiv, nthisRec, 0);
er += nthis;
receiv += nthis;
if(!IsSocketError(nthis)) // 判断接受信息是否成功
{
return FALSE;
}
}我在自己器上上调试时,发现程序就没有进入while 循环;在没有VC环境的机器上,运行程序,程序就死在while循环里了,请问高手这是怎么回事呢?
但是在没VC环境的机器上邮件就发送不出去了,我在静态库下编译的程序,相关部分代码如下:int er; // 接受send或receive的返回值 //发送helo命令
er = sock->Send(serv,serv.GetLength(),0);
if(!IsSocketError(er)) // 判断发送helo命令是否成功
{
return FALSE;
} //成功返回250
int nthis = 0; // 本次接受到的字节数
int nthisRec = 0; // 还应接受多少字节数
char* receiv = NULL;
receiv = new char[350]; // 申请接受ehlo命令后的响应信息空间
char* Lprec = NULL;
Lprec = receiv;
er = sock->Receive(receiv, 350, 0);
if(!IsSocketError(er)) // 判断接受信息是否成功
{
return FALSE;
}
AfxMessageBox(receiv); // 查看接收到的信息 receiv += er;
while(er < 335) // 接受的信息不够,循环进行接受
{
nthisRec = 350 - er;
nthis = sock->Receive(receiv, nthisRec, 0);
er += nthis;
receiv += nthis;
if(!IsSocketError(nthis)) // 判断接受信息是否成功
{
return FALSE;
}
}我在自己器上上调试时,发现程序就没有进入while 循环;在没有VC环境的机器上,运行程序,程序就死在while循环里了,请问高手这是怎么回事呢?
解决方案 »
- 鼓起了很大兴趣想学习MFC,可是现在变成了无头苍蝇,原因是老师说的……
- 可不可以介绍一本VC操作sql sever200X系列的书?
- 窗口的父指针是m_pParentWnd吗?
- VC中如何知道在使用拨号连接上网?
- 用哪个API函数可以获得自身的文件名、文件长度、还有修改日期啊?
- 关于如何关闭DLL中对话框的问题?
- 有用win2000服务程序连接数据库的过来人指点一下到底能用那种方法连接?odbc api、ADO、DAO或...
- 怎样添加记录? 这段代码怎么就是添加不进去记录?
- 怎样把BMP图片从上到下特效显示?@_@
- 我用的XP系统,怎么找不到newdev.h文件的啊
- 如何将写好的mfc单文档程序打成DLL
- 有没有办法可以做到这点:后台抓图.
SMTP消息有固定的格式,一个一个字节地接收,(一个消息)收完了就进行下一步操作
有时一次接收的信息不完整,所以在While循环里进行下一次接收。