5

谁能告诉我 INET 套接字和任何其他套接字之间的区别?

是否有允许使用 INET 套接字的 C# 库?

我试图找到它是什么,但我没有发现任何非常有用的东西。我怀疑它来自 UNIX 世界。

4

5 回答 5

15

套接字只是通信端点的抽象。实体之间的原始通信可以使用不同的通信方法。Linux 中的 INET 套接字是 Internet 套接字,即基于 IP 协议的套接字,但还有许多其他类型。我最近必须处理的一个是 Netlink 套接字,它用作用户进程和 linux 内核之间的 IPC 机制。与使用 IP 地址和端口的 INET 套接字不同,Netlink 套接字使用 linux 进程 ID 来识别通信方。在任何标准 Linux 机器上,您都可以打开文件 /usr/include/linux/socket.h 并查找 AF_MAX。它是一个宏,给出了当前套接字 api 支持的协议族的数量。在我的机器上它是 37。

我不知道 Windows API 中是否有任何称为 INET 套接字的东西。还没有为 Windows 做太多的开发。

于 2010-08-02T12:44:28.010 回答
2

有两个广泛使用的地址域,unix 域,其中两个共享公共文件系统的进程进行通信,以及 Internet 域,其中运行在 Internet 上的任何两台主机上的两个进程进行通信。每个都有自己的地址格式。

The address of a socket in the Unix domain is a character string which is basically an entry in the file system.

The address of a socket in the Internet domain consists of the Internet address of the host machine (every computer on the Internet has a unique 32 bit address, often referred to as its IP address).

From:Linux Howtos

于 2016-01-13T06:16:20.493 回答
1

在实例化 Socket 对象时指定 Socket 的类型:

var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream,  ProtocolType.Tcp);
于 2013-03-04T07:06:51.650 回答
0

我不知道 INET 套接字是什么(我能找到的最接近的是如何将本地 unix 套接字映射到 inet 套接字?),但 .NET 框架支持System.Net.Sockets命名空间中的套接字,特别是Socket类。

于 2010-02-21T10:04:02.580 回答
0

据我了解,INET指的是代表“IP 版本 4 的地址”的 InterNetwork,而不是代表“IP 版本 6 的地址”的 InterNetworkV6。它类似于python,其中AF-INET是IPv4,AF-INET6而 是IPv6。

我依赖于MSDN AddressFamily Enumeration页面和Python 套接字文档

于 2014-05-30T20:21:01.560 回答