网络编程

梦想的初衷 提交于 2020-01-29 05:06:07

网络编程和套接字

网络编程:两台连网的计算机相互交换数据。
套接字:完成数据传输。

请求套接字创建过程

1.调用socket函数(安装电话机)创建套接字(接电话需要准备什么-安装电话机)
2.调用bind函数分配IP地址和端口(分配电话号码)
3.调用LIsten函数转为可接受请求状态(连接电话线)
4.调用accept函数受理请求的连接(接听电话)

打电话套接字

1.调用socket函数创建套接字
2.调用connect函数向服务器发送连接请求

面向连接的套接字

特点:1.传输过程中数据不会消失
2.按序传输数据
3.传输数据不存在边界
列如:两位工人在一条传输带中传递物品,只要传输带本身没有问题,就能保证数据不会丢失。同时较晚的数据不会先到达,传送带保证了数据的按顺序排列。在这里插入图片描述

这种情况适于write和read函数:传输数据的计算机通过三次调用write函数传递了100字节的数据,但接受数据的计算机仅通过一次read函数调用了100个字节。
套接字的缓冲区read函数读取速度比接受数据的速度慢,则缓冲区可能被填满,此时套接字无法在接受数据,但不会发生数据丢失,套接字将停止传输。

面向消息的套接字

特点:1.强调快速传输而非传输顺序
2.传输的数据可能丢失也可能损失
3.传输的数据有数据边界
4.限制每次传输的数据大小
比如:用摩托车发往同一目的地的2件包裹无需保证顺序,只要以最快的速度交给客户即可。这种方式存在损坏或丢失的风险,而且包裹也有一定的限制。因此,若要传递大量的包裹,则需要分批发送。两个摩托车同时发送同一件包裹,则接受者分别需要接受两次。这种特征就是“传输的数据就有数据边界”。

网络地址

IPV4 4字节地址族
IPV6 16字节地址族
IP用于区分计算机,只要有IP地址就能向目标主机传输数据,IP地址分为网络ID和主机ID。
端口号就是在同一操作系统内区分不同套接字设置而成的,因此无法将1个端口号分配给不同的套接字。端口号是由16位构成,可分配的端口范围是0到65535。端口号不能重复,但TCP与UDO中的套接字可以重复使用。
总之,传输数据目标应同时包含IP地址和端口号,只有这样数据才能被传输到最终的应用程序。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!