高手请进:工作者线程中能否创建套接字?

alidiedie 2003-04-04 09:31:14
我想使用工作者线程实现端口的扫描,于是在 线程函数
UINT ThreadFuction(LPARAM lParam)
目的是在该函数中中创建套接字,连接,进行数据传送

程序一直出错,把套接字的操作注释掉之后,就没有错误了

于是我想问:工作者线程中到底能否创建套接字,如果能,该怎么创建?
...全文
32 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdn_viking 2003-04-04
  • 打赏
  • 举报
回复
直接用Winsock API,绝对可以。而且也不难嘛。
wuqingguo 2003-04-04
  • 打赏
  • 举报
回复
要MFC的socket,就必须用CWinThread创建线程,创建工作者线程是不行的。用winsock api就可以。
jingyad 2003-04-04
  • 打赏
  • 举报
回复

MFC中,socket是与线程相关的
也就是说,创建socket的线程内进行收发都是没有问题的
如果要跨线程则可以通过传递socket句柄来实现
在一个线程内Detach一个CAsyncSocket(CSocket)得到一个HSOCKET传递到另外一个线程然后attach到一个CAsyncSocket(CSocket)上,这样就可以进行跨线程使用SOCKET

我做过这种socket,用MFC实现肯定没问题
lwg7603 2003-04-04
  • 打赏
  • 举报
回复
当然可以,不用MFC,直接用WinSock API就行了~~
gongxx 2003-04-04
  • 打赏
  • 举报
回复
可以,当然可以,不过我用的是socket包,不是CSocket类
zhaolaoxin 2003-04-04
  • 打赏
  • 举报
回复
套接字必须和窗口关联,才能接收消息。所以在线程中需要创建一个隐藏的窗口。
alidiedie 2003-04-04
  • 打赏
  • 举报
回复
faint
我忘了调用 WSAStartup()了
alidiedie 2003-04-04
  • 打赏
  • 举报
回复
其实我就是用API做的,只不过自己写了个封装socket的类

谢谢大家了

我再改改看。
yydyqy 2003-04-04
  • 打赏
  • 举报
回复
MFC中,socket是与线程相关的
也就是说,创建socket的线程内进行收发都是没有问题的
如果要跨线程则可以通过传递socket句柄来实现
在一个线程内Detach一个CAsyncSocket(CSocket)得到一个HSOCKET传递到另外一个线程然后attach到一个CAsyncSocket(CSocket)上,这样就可以进行跨线程使用SOCKET

同意......

18,356

社区成员

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

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