高分求救:Sochet编程问题
m_sockSend.Create(6800,SOCK_DGRAM,NULL);
m_sockSend.Bind(6800,"192.168.100.159");
我放在构造函数里面。
m_sockSend.ReceiveFrom
和m_sockSend.SendTo
分别在类的不同成员函数里面
但是m_sockSend.ReceiveFrom
却运行不成功
如果将
m_sockSend.Create(6800,SOCK_DGRAM,NULL);
m_sockSend.Bind(6800,"192.168.100.159");
和m_sockSend.ReceiveFrom 放在一个函数里面
那么就不会有问题
请问怎么回事
问题点数:100、回复次数:10Top
1 楼quanbaoxiao(永不言败)回复于 2004-09-05 00:55:15 得分 10
用GetLastError()看看错误号是什么?Top
2 楼gdy119(夜风微凉)回复于 2004-09-05 17:14:51 得分 10
你需要重载OnReceive()
这个函数然后将m_sockSend.ReceiveFrom()
放到OnReceive()函数当中!
Top
3 楼mahatma_cn(研究硕士生)回复于 2004-09-05 18:33:15 得分 20
呵呵,你确定程序调用了你自己的构造函数吗?试着在构造函数中加入调试语句看看输出结果。Top
4 楼hjhd0(羡慕猪的生活)回复于 2004-09-05 19:14:28 得分 10
同意:gdy119(中国制造) 重载一下试试Top
5 楼dansin(平平淡淡才是真)回复于 2004-09-05 20:41:17 得分 20
在VC的socket编程中常用的方法是定义CSocket的派生类,然后在派生类中重载OnReceive,OnAccept等函数.Top
6 楼dansin(平平淡淡才是真)回复于 2004-09-05 20:42:05 得分 10
楼主你这样的阻塞操作并不是一个好方法.Top
7 楼lps(lps)回复于 2004-09-06 14:59:10 得分 0
通过调试显示
Debug Assertion Failed
File: sockcore.cpp
Line: 850
而在:sockcore.cpp文件中
BOOL CSocket::PumpMessages(UINT uStopFlag)
{
// The same socket better not be blocking in more than one place.
ASSERT(m_pbBlocking == NULL);
_AFX_SOCK_THREAD_STATE* pState = _afxSockThreadState;
ASSERT(pState->m_hSocketWindow != NULL); //此处断言失败
BOOL bBlocking = TRUE;
m_pbBlocking = &bBlocking;
CWinThread* pThread = AfxGetThread();
//....................
请问为什么会出现这种情况Top
8 楼lps(lps)回复于 2004-09-06 15:01:18 得分 0
构造函数 里面 确定执行了
而在别的程序里面也是这样的方式,但是没有出现这样的错误
请大家指点Top
9 楼allenq(黑夜给我黑的眼, 我却用他来翻白眼..........)回复于 2004-09-06 17:01:45 得分 10
怎么没有看到Connect或者Listen的函数调用啊?Top
10 楼smart_jing(尾巴)回复于 2004-09-06 17:07:01 得分 10
DGRAM用connect和listen么Top




