7622|4

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

Socket编程报错 ONLINE [复制链接]

我的做法是Server与Client建立连接,Server端生成一个Custom负责接收Client的数据包。
程序在Server端接收文件,调OnClientRead函数:
pSocket->m_pTCPServer->OnClientRead(pSocket->m_pTCPServer->m_pOwnerWnd, pSocket, recvBuf, recvLen);
这时候报如下错误:
Unhandled exception at 0x00000000 in Server.exe: 0xC0000005: Access violation reading location 0x00000000.
No symbols are loaded for any call stack frame. The source code cannot be displayed.
我以为是OnClientRead函数有问题,于是将OnClientRead函数体注释掉,加了句AfxMessageBox(_T("ok"));但是报同样错误。
TCPServe.h
typedef void (CALLBACK* ONCLIENTCONNECT)(CWnd*, TCPCustom*);
typedef void (CALLBACK* ONCLIENTCLOSE)(CWnd*, TCPCustom*);
typedef void (CALLBACK* ONCLIENTREAD)(CWnd*, TCPCustom*, char* buf, int len);
typedef void (CALLBACK* ONCLIENTERROR)(CWnd*, TCPCustom*, int nErrorCode);
typedef void (CALLBACK* ONSERVERERROR)(CWnd*, TCPServer*, int nErrorCode);

        ONCLIENTCONNECT OnClientConnect;
        ONCLIENTCLOSE OnClientClose;
        ONCLIENTREAD OnClientRead;
        ONCLIENTERROR OnClientError;
        ONSERVERERROR OnServerError;
函数实在Dlg中实现的。
我以为是这方面的问题,但是很奇怪,我将OnClientRead改成OnClientClose,程序就能继续跑下去。。。很郁闷啊。。。
谢谢各位大哥,给我点指点吧!!
*************************************************************
下面是ServerDlg里的OnClientRead的实现:

void CALLBACK CServerDlg::OnClientClose(CWnd *pWnd, TCPCustom *pTcpCustom)
{
        /*CServerDlg* pDlg = (CServerDlg*)pWnd;
        int iIndex;

        CListBox* pLstConn = (CListBox*)pDlg->GetDlgItem(IDC_LSTCONN);
        ASSERT(pLstConn != NULL);
        iIndex = pLstConn->FindString(iIndex, pTcpCustom->m_RemoteHost + _T("connecting"));
        if(iIndex == LB_ERR)
        {
                return;
        }
        pLstConn->DeleteString(iIndex);
        */
}

最新回复

DEBUG一下,访问的某个变量是空指针,NULL  详情 回复 发表于 2007-12-25 09:16
点赞 关注

回复
举报

79

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
服务器端接收文件应该单起一个线程来操作
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
这应该是属于低级的错误,先看看你采用的是阻塞的还是非阻塞的,你服务端接受错误,退出,说明可能在接受的时候对方根本没数据过来,也可能接受的大小溢出,仔细看看代码,网络连接的很多错误都是粗心造成的,不是什么技术问题 ,,,
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

4
 
确定是哪一行的错,应该是使用空指针的原因
 
 
 

回复

53

帖子

0

TA的资源

一粒金砂(初级)

5
 
DEBUG一下,访问的某个变量是空指针,NULL
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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