TCP/IP网络编程笔记——理解网络编程和套接字,套接字类型与协议设置(一)

一:理解网络编程和套接字

网络编程就是编写程序使两台连网的计算机相互交换数据。操作系统会提供一个名为“套接字”的部件,利用套接字我们可以进行数据传输。

套接字就是用来连接网络的工具

构建服务端套接字

下面用电话机的方式讲解套接字的创建及使用方法:

1.准备电话机
TCP/IP网络编程笔记——理解网络编程和套接字,套接字类型与协议设置(一)
2.调用bind函数(分配电话号码)
TCP/IP网络编程笔记——理解网络编程和套接字,套接字类型与协议设置(一)
3.调用listen函数(连接电话线)
TCP/IP网络编程笔记——理解网络编程和套接字,套接字类型与协议设置(一)
4.调用accept函数(拿起话筒)
TCP/IP网络编程笔记——理解网络编程和套接字,套接字类型与协议设置(一)
网络编程中接受连接请求的套接字创建过程可整理如下:

第一步:调用socket函数创建套接字。
第二步:调用bind函数分配IP地址和端口。
第三步:调用listen函数转为可接收请求状态。
第四部:调用accept函数受理连接请求。

构建客户端套接字

请求连接函数connect:
TCP/IP网络编程笔记——理解网络编程和套接字,套接字类型与协议设置(一)


二:套接字类型与协议设置

创建套接字
TCP/IP网络编程笔记——理解网络编程和套接字,套接字类型与协议设置(一)

协议族

套接字通信中的协议具有一些分类。通过socket函数的第一个参数传递,可分成如下几类:
TCP/IP网络编程笔记——理解网络编程和套接字,套接字类型与协议设置(一)
另外,套接字中实际采用的最终协议信息是通过socket函数的第三个参数传递的。在制定的协议族范围内通过第一个参数决定第三个参数。

套接字类型

套接字类型1:面向连接的套接字(SOCK_STREAM)

特征:
1.传输过程中数据不会丢失
2.按序传输数据。
3.传输的数据不存在数据边界(收发数据的套接字内部有缓冲区)。
4.套接字必须一一对应

TCP/IP网络编程笔记——理解网络编程和套接字,套接字类型与协议设置(一)
用一句话概括面向连接的套接字:
可靠的,按序传递的,基于字节的面向连接的数据传输方式的套接字。

套接字类型2:面向消息的套接字(SOCK_DGRAM)

特征:
1.强调快速传输而非顺序传输。
2.传输的数据可能丢失也可能损毁。
3.传输的数据有数据边界。
4.限制每次传输的数据大小,存在数据边界

用一句话概括面无向连接的套接字:
不可靠的,不按序传递的,以数据的高速传输为目的的套接字。