OCX高手来看看。。。。。。

cloud_soft 2001-12-17 05:26:47
我用MFC创建了一个OCX,主要是多线程聊天,我开了一个线程接受客户端的连接,每发现有客户要求连接,在开一个线程接受数据,我做成OCX后用VB调用(我建立了几个简单的方法),运行时正常,但一旦退出程序就出现非法操作!请各位高手指点一二(我用的是_beginthread)
...全文
121 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cloud_soft 2001-12-21
  • 打赏
  • 举报
回复
我把一部分代码贴出:
void CChatOCXSERVERCtrl::AcceptThread(PVOID pvoid)
{
SOCKADDR_IN client;
int intClient = 0;
OBJFUNC objFunc;
objFunc.dwFuncID = FUNCIDRECV ;
objFunc.pvoid = this;
memset( &client,0x00,sizeof(client));
while( TRUE )
{
intClient = sizeof( client );
m_sClient = accept ( m_ListenSOCKET , (SOCKADDR *)&client,&intClient );

if ( INVALID_SOCKET != m_sClient )
{
objFunc.s = m_sClient ;
_beginthread ( chStartThread ,0 , &objFunc );
}
if (WSAGetLastError() != NOERROR)
{
_endthread();
return ;
}

}
return ;
}

这是我的accept线程函数,各位分析分析。喀喀
sunyuzhe 2001-12-21
  • 打赏
  • 举报
回复
十分关注,upup
cloud_soft 2001-12-20
  • 打赏
  • 举报
回复
谢谢楼上的,@_@
但是:1.我在退出时已经把LISTEN的SOCKET关了。
2.accept线程调用accept函数时,好像此线程已经阻塞了,加上wsagetlasterror()有用吗?

希望各位多多指教。
cloud_soft 2001-12-19
  • 打赏
  • 举报
回复
我调试了一下,错误发生在accept线程中!我是用一个死循环来不断监测连接请求的,用vb一调用这个方法,推出后就非法操作了,各位老大,帮帮忙呀。
hujun614 2001-12-19
  • 打赏
  • 举报
回复

在死循环中加一个wsagetlasterror()函数,加到没有accept到有效的socket的后面。
得到合适的错误结果就退出来,

在退出的时候把listen的socket关了就行了。
cloud_soft 2001-12-18
  • 打赏
  • 举报
回复
各位老大,为什么我的ocx在vc下使用却没有问题呢。
cloud_soft 2001-12-18
  • 打赏
  • 举报
回复
OK, 我试一下
zzh 2001-12-18
  • 打赏
  • 举报
回复
应该是使用_beginThreaed来创建线程的,但你要检查一下在客户退出连接的时候线程有没有终止掉。另外,建立你采用线程池的方式来进行连接,而不是采用每有一个线程就新开一个连接的方式,这样对于系统的资源开销很大。
hujun614 2001-12-18
  • 打赏
  • 举报
回复
那只能算你的OCX没有写好啦,好好调试一下吧,看结束后OCX都做了些什么?
断点要设好,就可以知道了。
cloud_soft 2001-12-18
  • 打赏
  • 举报
回复
不是吧,大家都来看看呀
hujun614 2001-12-18
  • 打赏
  • 举报
回复
需要调试啥。
ygd 2001-12-18
  • 打赏
  • 举报
回复
agree zzh
cloud_soft 2001-12-18
  • 打赏
  • 举报
回复
sorry, 我没有说清楚。我的控件只是服务器端运行,client并没有运行,server只是侦听,这样在vb程序关闭时,出现非法操作。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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