动态库实现socket客户端多线程

yanxiazhiqiu 2009-07-14 06:46:53
我现在想要做这样一个动态库:
1、这个动态库需要提供给一个多线程的程序调用
2、动态库被程序加载的时候这个动态库负责和socket服务端建立N个连接
3、动态库暴露的函数需要和socket服务端完成数据发送和接收


现在写了一个小的多线程测试程序来测试动态库有个问题:
当两个线程同时启动来调用动态库的导出函数,有一个线程会被挂起,直到另一个线程执行完毕,另一个线程才会继续执行,我不知道导致问题的根源是什么?send和recv是阻塞模式的么?

如果对源代码有兴趣可附上邮箱,感谢。
...全文
193 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanxiazhiqiu 2009-07-16
  • 打赏
  • 举报
回复
感谢各位,终于对socket有点肤浅的认识了。
yanxiazhiqiu 2009-07-15
  • 打赏
  • 举报
回复
我想用winsock的api来做,不用mfc
fangle6688 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yanxiazhiqiu 的回复:]
我想用winsock的api来做,不用mfc
[/Quote]


没有特殊需求时,用mfc是最佳选择:你自己的封装,无论是功能还是性能都会比mfc差很多
除非mfc确实不能满足你的项目需求,最起码你应该花点时间研究下mfc的封装到底提供哪些功能及性能支持,不要轻易否定mfc
fangle6688 2009-07-14
  • 打赏
  • 举报
回复
MFC的CSocket已经满足你的需要,CSocket完美支持多线程。。。

参见:http://blog.csdn.net/fangle6688/archive/2006/07/27/986808.aspx
yanxiazhiqiu 2009-07-14
  • 打赏
  • 举报
回复
改成非阻塞模式会解决线程挂起这个问题么?
microyzy 2009-07-14
  • 打赏
  • 举报
回复
如果你什么都没改的话,socket就是阻塞模式的。


补充个问题:两个线程能否在同一个连接上send&recv?
====可以。
yanxiazhiqiu 2009-07-14
  • 打赏
  • 举报
回复
补充个问题:两个线程能否在同一个连接上send&recv?

18,364

社区成员

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

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