社区
进程/线程/DLL
帖子详情
winsock编程中的多线程
Mactanald
2000-02-28 02:15:00
我用winsock编程实现TCP/IP网络通讯,其中使用了多线程,但在线程中使用序列化时出现ASSERT错误,不知如何解决?
...全文
570
16
打赏
收藏
winsock编程中的多线程
我用winsock编程实现TCP/IP网络通讯,其中使用了多线程,但在线程中使用序列化时出现ASSERT错误,不知如何解决?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fmding
2001-10-08
打赏
举报
回复
up
cnss
2001-07-04
打赏
举报
回复
关注
deepwater
2000-03-01
打赏
举报
回复
也许我需要你的代码
Mactanald
2000-03-01
打赏
举报
回复
首先感谢deepwater!使用你的方法二,我在第二线程中能正常进行序列化,但接下来,在第一线程中进行序列化时却出现与上次同样的错误,请问该如何解决?
deepwater
2000-02-29
打赏
举报
回复
方法二我自己也没试过.
deepwater
2000-02-29
打赏
举报
回复
You are wellcome
oo
2000-02-29
打赏
举报
回复
deepwater,非常感谢你。现在ok了。
liu_z_j
2000-02-29
打赏
举报
回复
关注
deepwater
2000-02-29
打赏
举报
回复
方法一 ==> 我用过的方法,繁点
我们需要用到CAsyncSocket的一个protected成员函数,所以我们得定义一个CAsyncSocket或CSocket派生类,比如叫 CMySocket,然后写这么个成员函数:
void CMySocket::AttachSelf()
{
if(CAsyncSocket::LookupHandle(m_hSocket,FALSE)==NULL)
Attach(m_hSocket);
}
现在在第一线程中创建一个CMySocket对象pSock,再将这个指针传给第二线程,然后在第二线程中对这个指针调用
pSocket->AttachSelf();
现在你就可以在第二线程中尽情的使用创建于第一线程的pSocket了.
方法二 ==> 简单点,但未试过
不传递CAsyncSocket或CSocket对象指针,而传递socket handle,然后再第二线程中用FromHandle(hSocket)得到一个临时CAsyncSocket对象.
思想类似,应该可行.
Tell me your result
oo
2000-02-29
打赏
举报
回复
请教deepwater,具体如何做?怎么attach?能不能麻烦你把关键的代码贴出来,谢谢!
deepwater
2000-02-28
打赏
举报
回复
我有过类似经历.
对于某些Windows资源如窗口,GDI,包括socket的Handle,MFC采用一个线程local的数据结构来保存他们,当你使用与之对应的CWnd,CDC,CSocket对象时,MFC会在这个线程local的数据结构中寻找对象的Handle.当你将一个CSocket对象的指针传到另一个线程中时,MFC在这个线程local的数据结构中找不到Handle,会产生ASSERT错误.
解决方法:
传递socket的Handle而非CSocket对象,然后将此Handle在第二线程中与创建在第二线程中的CSocket对象Attach即可.
It will work!
netmare
2000-02-28
打赏
举报
回复
如果你用CSocket就没有WHQ所说的情况,但用CAsyncSocket有可能出错,可以按WHQ的方法解决.
WHQ
2000-02-28
打赏
举报
回复
MFC对SOCKET的封装类不直接支持多线程,你不能在工作线程中读/写SOCKET,我的做法是用多线程处理客户的请求,处理完后通过向主窗口发送一自定义的消息把处理结果转到主线程发送出去。
xenogear
2000-02-28
打赏
举报
回复
需要看源代码
forgettor
2000-02-28
打赏
举报
回复
关注
hayoo
2000-02-28
打赏
举报
回复
用CRITICAL_SECTION
基于TCP下
多线程
WINSOCK
编程
基于TCP下
多线程
WINSOCK
编程
TCP/IP
Winsock
编程
要点---利用
Winsock
编程
由同步和异步方式,同步方式逻辑清晰,
编程
专注于应用,在抢先式的多任务操作系统
中
(WinNt、Win2K)采用
多线程
方式效率基本达到异步方式的水平
利用
Winsock
编程
由同步和异步方式,同步方式逻辑清晰,
编程
专注于应用,在抢先式的多任务操作系统
中
(WinNt、Win2K)采用
多线程
方式效率基本达到异步方式的水平.
winsock
多线程
实例
vc++
winsock
实现
多线程
编程
的实例,使用了线程池.是个好例子.
Winsock
简单的
多线程
TCP服务器与客户端
Winsock
实现的简单的
多线程
TCP服务器与客户端。 可以进行文件下载。
winSock
的
多线程
编程
编写一个面向连接的MFC服务器程序,接受来自客户端的信息,并且发聩消息给客户端。
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章