WSARecv出现异常错误?谢谢!

vagabondkq 2003-12-16 04:14:41
//头文件中
typedef struct _PER_IO_DATA
{
WSAOVERLAPPED ol;

char *buf; // Buffer
int buflen; // Length of the buffer

int operation; // Type of operation issued
#define OP_ACCEPT 0 // AcceptEx
#define OP_READ 1 // WSARecv/WSARecvFrom
#define OP_WRITE 2 // WSASend/WSASendTo
} PER_IO_DATA, * LPPER_IO_DATA;

//源文件中
WSABUF wbuf;
Flags = 0;
WSAEVENT Event;
char buffer[4096];
char buffer[4096];

lpPerIoData = new _PER_IO_DATA;
ZeroMemory(&(lpPerIoData->ol), sizeof(OVERLAPPED));
//运行到这里时debug看到lpPerIoData->ol的对应项显示:
//"CXX0030: Error: expression cannot be evaluated"
Event = WSACreateEvent();
lpPerIoData->ol.hEvent = Event;

lpPerIoData->buflen=4096;
memcpy(buffer, &"", sizeof(buffer));
lpPerIoData->buf=buffer;

wbuf.len = lpPerIoData->buflen;
wbuf.buf = lpPerIoData->buf;

lpPerIoData->operation = OP_READ;

i = WSARecv(Accept,
&wbuf,
1,
&RecvBytes,
&Flags,
&(lpPerIoData->ol),
wbuf.len = lpPerIoData->buflen;
NULL); //此处出现了异常错误!?

delete lpPerIoData;

/////////////////////////////////////////////////////////////////
是不是上面的lpPerIoData->ol导致的异常错误呢?
怎么解决呢?
小弟调了两天了!
万分感谢!
...全文
160 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
vagabondkq 2003-12-17
  • 打赏
  • 举报
回复
怎么看调用栈信息啊?
在哪里看呢?
我感觉就是lpPerIoData->ol初始化的问题,但我找不出来。
vagabondkq 2003-12-17
  • 打赏
  • 举报
回复
up
help
vagabondkq 2003-12-17
  • 打赏
  • 举报
回复
up
help
topwork 2003-12-16
  • 打赏
  • 举报
回复
你能不能跟一下,然后在出错的时候看看调用栈的信息;
vagabondkq 2003-12-16
  • 打赏
  • 举报
回复
to: topwork(日光)
你说的那段是我的笔误,程序里不是那么写的,对不起:)
我用的是完成端口,最后一个参数是空的。
vagabondkq 2003-12-16
  • 打赏
  • 举报
回复
我试了一下,还是一样的问题呀?
还有其他问题??
郁闷ing...
topwork 2003-12-16
  • 打赏
  • 举报
回复
i = WSARecv(Accept,
&wbuf,
1,
&RecvBytes,
&Flags,
&(lpPerIoData->ol),
wbuf.len = lpPerIoData->buflen;
NULL);
这段贴的有点问题吧;是不是应该是这样的:
i = WSARecv(Accept,
&wbuf,
1,
&RecvBytes,
&Flags,
&(lpPerIoData->ol),
NULL);
wbuf.len = lpPerIoData->buflen;
如果是这样那么你用了异步操作,那么最后一个参数能为空么?
topwork 2003-12-16
  • 打赏
  • 举报
回复
薄荷老大,WSAOVERLAPPED和OVERLAPPED虽然结构不同但是他们的sizeof结果是相同的呀;
那样写应该没错吧;
bluebohe 2003-12-16
  • 打赏
  • 举报
回复
WSAOVERLAPPED和OVERLAPPED结构体不同,你不应该那样初始化
ZeroMemory(&(lpPerIoData->ol), sizeof(WSAOVERLAPPED ));

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧