socket是什么?套接字是什么?
网络编程是网络编程。在很大意义上,它是发送和接收信息的功能,中间传输是物理线路。它是编写程序,使两台联网计算机能够相互交换数据。那么,这两台计算机之间的数据传输是什么?首先,需要物理连接。今天大多数计算机都连接到了互联网,所以不用担心。在此基础上,我们只需要考虑如何编写数据传输程序。但事实上,没有必要担心这一点,因为操作系统提供了即使我们不熟悉网络数据传输的原理,我们也可以通过socket编程。
什么是 socket?
socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过socket这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。
socket 的典型应用和常见场景就是javaWeb服务器和浏览器:浏览器获取用户输入的URL并向服务器发出请求。服务器分析接收到的URL并将相应的网页内容返回给浏览器。浏览器然后分析并向用户呈现文本、图片、视频和其他元素。
Linux 中的 socket 是什么?
在 Linux 系统中,为了统一对各种硬件的操作以及简化接口操作,不同的硬件设备也都被看成一个文件类读写操作。对这些文件的操作,等同于对磁盘上普通文件的操作。大家应该字段Linux 中的一切都是文件!没有可视化页面,
为了表示和区分已经打开的文件,Linux 会给每个文件分配ID,被称为文件描述符(FileDescriptor)。例如:
- 通常用 0 来表示标准输入文件(stdin),它对应的硬件设备就是键盘;
- 通常用 1 来表示标准输出文件(stdout),它对应的硬件设备就是显示器。
当Linux程序执行任何形式的I/O操作时,它们正在读取或写入文件描述符。文件描述符仅是与打开的文件相关联的整数。它的后面可能是硬盘上的普通文件、终端、键盘、管道、显示器,甚至是网络连接。
请注意,网络连接也是一个文件,它也有一个文件描述符!你必须理解这句话。
我们可以通过socket()函数创建网络连接,或者打开网络文件。socket()的返回值是文件描述符。通过文件描述符,我们可以使用普通的文件操作函数来传输数据,
例如:
- 用 read() 读取从远程计算机传来的数据;
- 用 write() 向远程计算机写入数据。
其实只要用 socket() 创建了连接,剩下的就是文件操作了。
如果觉得本文对你有帮助,不妨点赞收藏起来把,说不定下次要用就找不到了呢。
- 点赞
- 收藏
- 关注作者
评论(0)