Window Socket 编程
leibniz_zsu
这个作者很懒,什么都没留下…
展开
-
CAsyncSocket异步机制
当你获得了一个异步连接后,实际上你扫除了发送动作与接收动作之间的依赖性。所以你随时可以发包,也随时可能收到包。发送、接收函数都是异步非阻塞的,顷刻就能完成,所以收发交错进行着,你可以一直工作,保持很高的效率。但是,正因为发送、接收函数都是异步非阻塞的,所以仅调用它们并不能保障发送或接收的完成。例如发送函数Send,调用它可能有3种结果:错误、部分完成、全部完成。其中错误又分两种情况:一种是由各种网原创 2007-05-17 13:42:00 · 1131 阅读 · 0 评论 -
Windows Sockets:阻塞
本文以及另外两篇相关文章解释 Windows Sockets 编程方面的一些问题。本文介绍阻塞。其他问题包含在 Windows Sockets:字节排序和 Windows Sockets:转换字符串文章中。 如果使用 CAsyncSocket 类或从其派生,则您需要自己管理这些问题。如果您使用 CSocket 类或从其派生,则由 MFC 管理它们。阻塞套接字可以处于“阻塞模式”或“无阻塞模式”翻译 2007-05-17 13:48:00 · 962 阅读 · 0 评论 -
Windows Sockets:转换字符串
本文以及另外两篇相关文章解释 Windows Sockets 编程方面的一些问题。本文介绍转换字符串。其他问题在 Windows Sockets:阻塞和 Windows Sockets:字节排序中介绍。如果使用 CAsyncSocket 类或从其派生,则您需要自己管理这些问题。如果您使用 CSocket 类或从其派生,则由 MFC 管理它们。转换字符串如果在使用以不同的宽字符格式(如翻译 2007-05-17 13:50:00 · 767 阅读 · 0 评论 -
Windows Sockets:字节排序
本文以及另外两篇相关文章解释 Windows Sockets 编程方面的一些问题。本文介绍字节排序。其他问题在文章 Windows Sockets:阻塞和 Windows Sockets:转换字符串中介绍。 如果使用 CAsyncSocket 类或从其派生,则您需要自己管理这些问题。如果您使用 CSocket 类或从其派生,则由 MFC 管理它们。 字节排序 不同的计算机结构有时翻译 2007-05-17 13:51:00 · 953 阅读 · 0 评论 -
WinSocket API封装
MFC提供了两个类CAsyncSocket和CSocket来封装WinSock API,这给程序员提供了一个更简单的网络编程接口。CAsyncSocket在较低层次上封装了WinSock API,缺省情况下,使用该类创建的socket是非阻塞的socket,所有操作都会立即返回,如果没有得到结果,返回WSAEWOULDBLOCK,表示是一个阻塞操作。CSocket建立在CAsyncSocket的转载 2007-05-17 14:08:00 · 1917 阅读 · 0 评论 -
如何在多线程之间传递socket
有些特殊情况下,可能需要在不同线程之间传递socket。当然我不建议在使用CAsyncSOcket的时候这么做,因为这增加了出错的风险(尤其当出现拆解包问题时,有人称为粘包,我基本不认同这种称呼)。如果一定要这么做,方法应该是: 当前拥有这个socket的线程调用Detach方法,这样socket句柄和C++对象及当前线程脱离关系 当前线程把这个对象传递给另外一个线程转载 2007-05-24 16:52:00 · 2949 阅读 · 0 评论 -
CAsyncSocket对象不能跨线程之分析
现象用多线程方法设计socket程序时,你会发现在跨线程使用CAsyncSocket及其派生类时,会出现程序崩溃。所谓跨线程,是指该对象在一个线程中 调用Create/AttachHandle/Attach函数,然后在另外一个线程中调用其他成员函数。下面的例子就是一个典型的导致崩溃的过程:CAsyncSocket Socket;UINT Thread(LPVOID){Socket.Cl转载 2007-05-24 16:50:00 · 1130 阅读 · 0 评论