如果使用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条中的注意事项。