socket是什么?套接字是什么?

举报
Java李杨勇 发表于 2022/08/31 20:58:55 2022/08/31
【摘要】 网络编程是网络编程。在很大意义上,它是发送和接收信息的功能,中间传输是物理线路。它是编写程序,使两台联网计算机能够相互交换数据。那么,这两台计算机之间的数据传输是什么?首先,需要物理连接。今天大多数计算机都连接到了互联网,所以不用担心。在此基础上,我们只需要考虑如何编写数据传输程序。但事实上,没有必要担心这一点,因为操作系统提供了即使我们不熟悉网络数据传输的原理,我们也可以通过socket编...

网络编程是网络编程。在很大意义上,它是发送和接收信息的功能,中间传输是物理线路。它是编写程序,使两台联网计算机能够相互交换数据。那么,这两台计算机之间的数据传输是什么?首先,需要物理连接。今天大多数计算机都连接到了互联网,所以不用担心。在此基础上,我们只需要考虑如何编写数据传输程序。但事实上,没有必要担心这一点,因为操作系统提供了即使我们不熟悉网络数据传输的原理,我们也可以通过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() 创建了连接,剩下的就是文件操作了。

如果觉得本文对你有帮助,不妨点赞收藏起来把,说不定下次要用就找不到了呢。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。