2956|7

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

CSocket断言错误 [复制链接]

我用CSocket传输文件,接收时会出现断言错误:socketcore.cpp,line: 1466,我看了一下这个文件,断言是OnSocketDead函数里的assert(hEvent!=Null)这句,请问各位大侠这是什么问题呢?

最新回复

hEvent是系统的代码,socketcore.cpp里面得,这是我的代码,不好意思,我没有弄好,红色指的是这段:for(;;)     {         n=recSo.Receive(buf,SIZEFILE);    //接受         if(n==0)        //0表示结束         {             recSo.Close();             break;        //接受完毕         }         f.Write(buf,n);     }    f.Close();   详情 回复 发表于 2009-6-16 19:22
点赞 关注

回复
举报

64

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
hEvent的值为空了,原因不明!

可能是内存覆盖
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
直接用 Windows Socket 比较好。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

4
 
内存覆盖是什么意思
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

5
 
我贴一下我的代码吧,麻烦各位大侠帮我看一下
[code]while (true)
{

        CSocket sockSrvr;

        int createSucceed=sockSrvr.Create(pDlg->m_iPort);
        if(createSucceed==0)
        {
                continue;
        }

        int listenSucceed=sockSrvr.Listen();        //开始监听
        if(listenSucceed==0)
        {
                continue;
        }

        CSocket recSo;
        SOCKADDR_IN client;
        int iAddrSize=sizeof(client);

        int acceptSucceed=sockSrvr.Accept(recSo,(SOCKADDR *)&client,&iAddrSize);        //接受连接并取得对方IP
        if(acceptSucceed==0)
        {
                recSo.Close();
                continue;
        }
        sockSrvr.Close();
        char flag[FLAG]={0};               
        if(recSo.Receive(flag,FLAG)!=2)
        {
                recSo.Close();
                continue;
        }

        CString fname;
        FILEINFO myFileInfo;
        recSo.Receive(&myFileInfo,sizeof(FILEINFO));
        int fileLength=myFileInfo.fileLength;
        CString strfileIp,strfileName,strfileLength;
        strfileIp.Format(L"%s",inet_ntoa(client.sin_addr));

        strfileName=myFileInfo.fileName;

        char buf[SIZEFILE]={0};
        CFile f(strfileName,CFile::modeCreate|CFile::modeWrite);        //存文件



        int n=0;        //接受的字节数 0表示结束
        int temp=0;

        for(;;)
        {
                n=recSo.Receive(buf,SIZEFILE);        //接受
                if(n==0)                //0表示结束
                {
                        recSo.Close();
                        break;                //接受完毕
                }
                f.Write(buf,n);
        }
        f.Close();

       
}
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 
  1. while (true)
  2. {

  3.         CSocket sockSrvr;

  4.         int createSucceed=sockSrvr.Create(pDlg->m_iPort);
  5.         if(createSucceed==0)
  6.         {
  7.                 continue;
  8.         }

  9.         int listenSucceed=sockSrvr.Listen();        //开始监听
  10.         if(listenSucceed==0)
  11.         {
  12.                 continue;
  13.         }

  14.         CSocket recSo;
  15.         SOCKADDR_IN client;
  16.         int iAddrSize=sizeof(client);

  17.         int acceptSucceed=sockSrvr.Accept(recSo,(SOCKADDR *)&client,&iAddrSize);        //接受连接并取得对方IP
  18.         if(acceptSucceed==0)
  19.         {
  20.                 recSo.Close();
  21.                 continue;
  22.         }
  23.         sockSrvr.Close();
  24.         char flag[FLAG]={0};               
  25.         if(recSo.Receive(flag,FLAG)!=2)
  26.         {
  27.                 recSo.Close();
  28.                 continue;
  29.         }

  30.         CString fname;
  31.         FILEINFO myFileInfo;
  32.         recSo.Receive(&myFileInfo,sizeof(FILEINFO));
  33.         int fileLength=myFileInfo.fileLength;
  34.         CString strfileIp,strfileName,strfileLength;
  35.         strfileIp.Format(L"%s",inet_ntoa(client.sin_addr));

  36.         strfileName=myFileInfo.fileName;

  37.         char buf[SIZEFILE]={0};
  38.         CFile f(strfileName,CFile::modeCreate|CFile::modeWrite);        //存文件



  39.         int n=0;        //接受的字节数 0表示结束
  40.         int temp=0;

  41.         [color=#FF0000]for(;;)
  42.         {
  43.                 n=recSo.Receive(buf,SIZEFILE);        //接受
  44.                 if(n==0)                //0表示结束
  45.                 {
  46.                         recSo.Close();
  47.                         break;                //接受完毕
  48.                 }
  49.                 f.Write(buf,n);
  50.         }[/color]        f.Close();

  51.         /*******************************************************/
  52. }
复制代码

问题好像处在红色部分
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

7
 
红色?难道偶色盲了。

hEvent在代码中压根就没有出现,晕!
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

8
 
hEvent是系统的代码,socketcore.cpp里面得,这是我的代码,不好意思,我没有弄好,红色指的是这段:for(;;)
    {
        n=recSo.Receive(buf,SIZEFILE);    //接受
        if(n==0)        //0表示结束
        {
            recSo.Close();
            break;        //接受完毕
        }
        f.Write(buf,n);
    }
    f.Close();

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表