【问题标题】:what is interface in socket programming?套接字编程中的接口是什么?
【发布时间】:2014-03-27 12:43:25
【问题描述】:
"INADDR_ANY binds the socket to all available interfaces."

这是我遇到的说法。I found it here

这里的接口是什么?是端口号还是别的什么?

还有一个问题是

接口和渠道是一回事吗?

【问题讨论】:

  • 接口是操作系统可见的(或多或少真实的)网络接口,可以这么说,位于端口号下方。您可以在一个接口上侦听端口,同时不在另一个接口上侦听。
  • @Robert “你可以在一个接口上监听一个端口,同时不要在另一个接口上监听”。我不清楚这个

标签: c sockets


【解决方案1】:

通常您的主机(您的计算机)有多个接口。例如,没有网络的(旧)计算机将只有 IPv4 loopback 接口。

如果您向该 PC 添加和配置 IPv4 网络,您将获得另一个接口:eth0net0 或类似的东西。

当您安装 VPN 时,它会为您创建另一个接口,因为您不会将数据包发送到不安全的网络,而是将其发送到逻辑 VPN 接口,然后该接口会在经过一些处理后将数据转发到 eth0

每次,当您将硬件链接(带有驱动程序)添加到网络或创建逻辑网络时,它都会为您创建一个新接口。例如,如果您使用 VMVare 并创建虚拟机,系统会为您提供一些在主机、网络和虚拟机之间路由数据所需的接口。

路由 IPv4 时,每个接口都分配有 IPv4 地址。甚至环回(127.0.0.1)。该地址可以是静态的,也可以在系统启动时从服务器获取。

因此您只能在一个界面上收听。例如,如果您绑定到回送,您将无法访问任何网络,并且网络主机将无法访问您的套接字(假设路由没有损坏)。但是您将主机上的多个进程相互连接。

如果您绑定到特定的网络接口,这意味着您想要使用连接到该网络(直接或间接)的系统。

如果你绑定到any,对于服务器套接字,这意味着你让系统接受来自anywhere 的连接,考虑到anywhere 可以ping 你。

【讨论】:

    【解决方案2】:

    接口示例:

    • 您可以插入网线的 LAN 卡,
    • wifi 适配器,
    • 一种(纯软件)东西,它在您的主系统和虚拟机之间提供了一个虚构的网络
    • (纯软件)环回适配器将您发送给它的所有内容“返回”到您自己的计算机

    等等。如果您正在编写套接字服务器,您可以选择
    客户端连接可能来自哪里。
    只能从虚拟机,外面没有真机?
    只有wifi,但没有有线局域网?还是一起来?

    【讨论】:

      【解决方案3】:

      据我了解,套接字接口是这样的

      1. 为文件系统的功能提供类似于抽象的文件系统 网络。
      2. 每个传输协议都提供一组服务。套接字 API 提供抽象来访问这些服务
      3. API 定义函数调用来创建、关闭、读取和写入 到/从套接字。

      也是这样的

      网络接口是计算机与专用或公共网络之间的互连点。网络接口通常是网络接口卡 (NIC),但不必具有物理形式。相反,网络接口可以在软件中实现。

      例如,环回接口(127.0.0.1 for IPv4 and ::1 for IPv6) 不是物理设备,而是模拟网络接口的软件。 loopback接口常用于测试环境

      【讨论】:

        猜你喜欢
        • 2013-01-24
        • 1970-01-01
        • 2017-12-03
        • 2015-10-25
        • 1970-01-01
        • 1970-01-01
        • 2022-05-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多