套接字基本常识

从程序的角度来看,套接字的概念与文件句柄的概念相似,它是一个句柄代表网络协议中的一组数据.这组数据包括TCP连接中双方的IP地址和连接状态等.

流套接字提供双向有序,无重复并且没有记录边界的数据流服务.

数据报套接字岁让支持双向的数据流,但不保证数据是可靠的,有序的和无重复的.

SOCKET s=socket();

if(INVALID_SOCKET==S)

{//失败.}

协议特征

面向连接(可靠性,准确性)与面向无连接(数据报,效率高).  可靠性与次序性.  面向消息(对每个离散命令来说,如果传输协议把每条命令作为独立的消息进行传输).

部分消息(只用于面向消息的协议). 从容关闭(一方即使关闭连接,但对方仍然可以读取网络堆栈中的数据).  路由选择.   广播数据.

阻塞模式:套接字在执行操作事,调用函数在没有完成操作之前不会立即返回到工作模式.一般是用于少量数据接受和发送的简单网络程序.


Windows Sockets 分别提供了  套接字模式 和 套接字I/O模型.
套接字模式有阻塞和非阻塞 两种工作模式. 套接字I/O模型描述了一个应用程序如果对套接字上的I/O进行管理.

使用socket()和WSASocket()创建套接字时,默认的是阻塞. 但并不是所有以阻塞套接字为参数调用都会发生阻塞.例如 bind().listen()...

inet_ntoa()和inet_add()实现网络地址和 . 间隔的字符串地址之间的转换.

ntohs();

 

套接字在非阻塞模式中,调用的函数不管操作是否完成都会立即返回.

ioctlsocket()可将套接字设置为非阻塞模式. 

Select模型是Windows Sockets中最常见的I/O模型. 核心函数 Select(). 判断当前各个套接字的当前状态.根据该函数的返回值,判断套接字的可读可写性. 需要用到的FD_SET.FD_ZERO.FD_ISSET和FD_CLR4这些宏.

WSAAsyncSelect 模型是Windows Sockets的一个异步I/O模型. 非阻塞模式. 利用该模型可以在一个套接字上,接受Windows消息为基础的网络事件. Windows Sockets应用程序在创建套接字后,调用WSAAsyncSlect()函数注册感兴趣的网络事件.

原文地址:https://www.cnblogs.com/lvpblog/p/2545796.html