Inet套接字和套接字?

时间:2010-02-21 09:35:13

标签: c# sockets inet

有人可以告诉我INET Socket和任何其他套接字之间的区别吗?

是否有一个C#库允许用户使用INET套接字?

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

5 个答案:

答案 0 :(得分:12)

套接字只是通信端点的抽象。实体之间的原始通信可以使用不同的通信方法。 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做过很多开发。

答案 1 :(得分:2)

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

Unix域中套接字的地址是一个字符串,它基本上是文件系统中的一个条目。

Internet域中套接字的地址由主机的Internet地址组成(Internet上的每台计算机都有一个唯一的32位地址,通常称为其IP地址)。

自:Linux Howtos

答案 2 :(得分:1)

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

var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream,  ProtocolType.Tcp);

答案 3 :(得分:0)

我不知道INET套接字是什么(我能找到的最接近的是How can I map a local unix socket to an inet socket?),但.NET Framework支持System.Net.Sockets命名空间中的套接字,特别是{{3 }。class。

答案 4 :(得分:0)

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

我依赖于MSDN AddressFamily Enumeration页面和Python sockets documentation