winsock初级问题。

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

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

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

有关问题请各位详细解答,不胜感激!
...全文
137 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来编程的话会对这个问

题理解得更为透彻^_^

还有什么问题欢迎你来网络版继续讨论^_^
第一章 VC入门 1.1 如何学好VC 1.2 理解Windows消息机制 1.3 利用Visual C++/MFC开发Windows程序的优势 1.4 利用MFC进行开发的通用方法介绍 1.5 MFC中常用类、宏、函数介绍 第二章 图形输出 2.1 和GUI有关的各种对象 2.2 在窗口中输出文字 2.3 使用点、刷子、笔进行绘图 2.4 在窗口中绘制设备相关位图、图标、设备无关位图 2.5 使用各种映射方式 2.6 多边形和剪贴区域 第三章 文档视结构 3.1 文档 视图 框架窗口间的关系和消息传送规律 3.2 接收用户输入 3.3 使用菜单 3.4 文档、视、框架之间相互作用 3.5 利用序列化进行文件读写 3.6 MFC中所提供的各种视类介绍 第四章 窗口控件 4.1 Button 4.2 Static Box 4.3 Edit Box 4.4 Scroll Bar 4.5 List Box/Check List Box 4.6 Combo Box/Combo Box Ex 4.7 Tree Ctrl 4.8 List Ctrl 4.9 Tab Ctrl 4.A Tool Bar 4.B Status Bar 4.C Dialog Bar 4.D 利用AppWizard创建并使用ToolBar StatusBar Dialog Bar 4.E General Window 4.F 关于WM_NOTIFY的使用方法 第五章 对话框 5.1 使用资源编辑器编辑对话框 5.2 创建有模式对话框 5.3 创建无模式对话框 5.4 在对话框中进行消息映射 5.5 在对话框中进行数据交换和数据检查 5.6 使用属性对话框 5.7 使用通用对话框 5.8 建立以对话框为基础的应用 5.9 使用对话框作为子窗口 第六章 网络通信开发 6.1 WinSock介绍 6.2 利用WinSock进行无连接的通信 6.3 利用WinSock建立有连接的通信

18,363

社区成员

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

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