包以独立包形式发送,不提供无错保证,
数据可能丢失,且接收顺序混乱
SOCK_RAW Raw sockets 允许对较低层协议,如IP、ICMP 直接访问
表11-2 网络协议取值与套接字类型关系
套接字类型 网络协议
TCP IPPROTO_IP
UDP IPPROTO_UDP
Raw sockets IPPROTO_RAW
11.2.3 绑定地址
创建好Socket 后,通常要将本地地址附加到所创建的套接字上以便能够有效地标识此套
接字。这个过程由bind()函数来实现,它的原型如下:
int bind(SOCKET s, const struct sockaddr FAR *ncom, int ncomlen);
各参数意义如下:
? s:要绑定的套接字。
? ncom:用来赋予套接字地址。
? ncomlen:ncom 参数的长度。
其中,sockaddr 结构如下:
struct sockaddr_in
{
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
各参数意义如下。
? sin_family:在Windows cāo作系统中,此值为AF_INET。
? sin_port:服务的端口号。
? sin_addr:保存IP 地址。
? sin_zero[8]:其值为0,只起填充作用。
如果绑定成功,则返回0;出错则返回SOCKET_ERROR。
11.2.4 建立连接
函数connect()可以实现客户机和服务器的连接,其原型如下:
int connect(SOCKET s, const struct sockaddr FAR *ncom, int ncomlen);
各参数意义如下。
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·284·
? s:进行连接的套
松语文学免费小说阅读_www.16sy.com