Inet Socket和Socket有什么区别?

5

有人能告诉我INET Socket和其他Socket之间的区别吗?

是否有C#库可让我们使用INET Socket?

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

5个回答

16

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

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


2
有两种广泛使用的地址域,一种是Unix域,在其中共享一个常见文件系统的两个进程进行通信,另一种是Internet域,在其中任意两个主机上运行的两个进程进行通信。每种地址域都有自己的地址格式。
Unix域套接字的地址是一个字符字符串,基本上是文件系统中的一个条目。
Internet域套接字的地址由主机机器的Internet地址组成(Internet上的每台计算机都有一个唯一的32位地址,通常称为其IP地址)。
来源:Linux Howtos

1

在实例化Socket对象时,您需要指定Socket的类型:

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

0

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接