CSocket必须使用stream socket不能够使用数据报 socket

如果使用MFC socket类CSoket通讯,必须使用stream socket,不能够使用 SOCK_DGRAM 类型socket。原因如下:

1 stream socket和数据报socket的区别就是,

   前者是可靠传输,数据会被拆成多个数据包发送:

   (1) 收发两端的发送的数据包顺序要一样。

   (2)数据包还不能重复。

   (3)每个数据包没有界限。

   后者恰好相反。

2 CSocket通过CArchive来从socket中读写数据。主要原理是,创建一个和CSocket关联的CSocketFile

   对象,CArchive从CSocketFile对象中读写数据。CArchive读写数据是以二进制格式读写数据,其特征

   恰好和stream socket相一致。

补充:

标题来源于msdn文档Windows Sockets: Stream Sockets最后一句话,网址:https://msdn.microsoft.com/en-us/library/474e45z0.aspx。

具体说明,参考CArchive类和msdn文档中的文章Windows Sockets: Using Sockets with Archives

The CSocket Pragramming model标题下的第2条中的注意事项。

posted @ 2015-02-06 10:52  罗纳尔东  阅读(219)  评论(0编辑  收藏  举报