Windows Socket是基于伯克利的Unix Socket的。微软的MFC提供了两种类来支持Socket编程。CSocket类为网络编程提供了高级别抽象。一个socket是有一种类型的并且与某个process相结合在一起。两类socket都是双向的:可以同时在两个方向进行数据上的交互。
两类socket是可用的的:
Stream sockets:可以提供数据流而且不需要记录边界——字节流。流的方式可以保证传输并且顺序正确。
Datagram sockets:可以提供面向记录的数据流,但是该流无法保证传输并且是无序的。
Note 在更加通用的tcp/ip协议下,流是字节流。Windows的socket对低层的协议进行了抽象 。
Socket 数据类型
每一个MFC Socket对象都包含了一指针,该指针指向了Windows的Socket对象。该指针的数据类型是SOCKET。
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
struct in_addr {
union {
struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
struct { u_short s_w1,s_w2; } S_un_w;
u_long S_addr;
} S_un;
u_short htons( u_short hostshort)将主机上的u_short类型变量转化为tcp/ip网络的字节顺序
.