winsock初级问题。

xhenry 2004-07-12 12:11:47
刚开始学winsock编程,使用MFC中的CSocket类,对各教材的标准例程有两问题。

问题一:为什么总是要继承一个CSocket类,然后使用派生的类来处理信息的发送、接受等操作。

问题二:当监听socket发现一个客户试图连接时,会new一个socket,然后用新的socket与客户通讯。我想知道,是不是每new一个socket实际上就是创建一个新线程?如果不是,如何保证各个socket能独立与客户通讯呢?

有关问题请各位详细解答,不胜感激!
...全文
138 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
iorikingdom 2004-07-12
  • 打赏
  • 举报
回复
第一:你要对具体问题,才能够构造出你所需要的类,所以要派生
第二:每个端口都可以处理不同的客户
stormding 2004-07-12
  • 打赏
  • 举报
回复
当一个网络事件发生时,通过MFC的信息结构,就可以由CAsynsSocket或CSocket的Callback function按照事件来处理.最常用的有OnReceive(),OnSend(),OnAccept(),OnConnect(),OnClose()等函数,它们分别在收到信息时,发送时,侦听时,连接时,关闭时触发.

每个用户做网络要求都不同,当然会重写这些信息处理.

zhaolaoxin 2004-07-12
  • 打赏
  • 举报
回复
CSocket只完成公用的操作,没有你自己想要的代码,所以继承后补充自己的东西。

第二个问题正如你所说的那样。
ytssu 2004-07-12
  • 打赏
  • 举报
回复
这要看你在哪儿new,比如在C**app的InitInstance中new,那么就要等到
整个程序结束是销毁。
PiggyXP 2004-07-12
  • 打赏
  • 举报
回复
如果每次new一个新的socket就是开了一个新的线程,那么这个线程如何结束(何时)?

==============================================================================

每次新开的监听线程,是需要你手动想办法结束的
danielzhu 2004-07-12
  • 打赏
  • 举报
回复
看看深入浅出MFC,就明白了
xhenry 2004-07-12
  • 打赏
  • 举报
回复
to difa:你需要的是一个控件,VB中包含一个WinSock的控件,可以设置监听的端口号,然后如果有接收到数据就会触发一个Receive的事件。具体内容可查看MSDN中的VB控件参考部分。
difa 2004-07-12
  • 打赏
  • 举报
回复
有不有使用VC Csoket作DLL的,用户操作介面只提供如下:
int InitSocket(...);
int Send(...);
int Receive(...);
int CloseSocket(...);
......
这样可供VB,等其它调用。
请问,你样可行吗,见网上有这样的例子吗??
xhenry 2004-07-12
  • 打赏
  • 举报
回复
to PiggyXP:我也想从winsocket api开始,可现在是维护一个老程序,没办法。

还有几个问题:

通常从CSocket派生的类会在OnReceive过程中调用窗口中的一个方法(在这个方法类中中读取实际接收到的数据),如果该窗口正好打开一个新的模式窗口,是否回阻塞数据的接收?

如果每次new一个新的socket就是开了一个新的线程,那么这个线程如何结束(何时)?是不是客户连接一断开就自动结束?还需要我delete它吗?
PiggyXP 2004-07-12
  • 打赏
  • 举报
回复
其实我觉得楼主不如从基本的纯socket api学起

会让你对socket的机制理解得更为透彻

------ 纯属个人意见,视个人喜好而定:)
PiggyXP 2004-07-12
  • 打赏
  • 举报
回复
1. 如果只是简单的操作,就没有必要从CSocket派生自己的类了,CSocket类中带有的成员函

数完全可以完成需要的功能。

2。是这样的,其实如果你不用MFC的CSocket类,自己用纯socket api来编程的话会对这个问

题理解得更为透彻^_^

还有什么问题欢迎你来网络版继续讨论^_^

18,363

社区成员

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

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