套接字的替代方案

6
我看到sockets的定义是“UDP/TCP连接最常用的API”(学校资料)。 这让我很好奇是否有其他选择,但我还没有找到任何替代方案。我不是指添加抽象层(例如RPC或RMI)或使用不同的网络堆栈等,而是使用另一种方式完全实现相同作用的东西。
也许我误解了socket的作用,我认为它适用于会话OSI层,或者可能是传输层? 对此我不是很确定。
我并没有计划使用这些替代方案,我知道socket非常方便,我只是好奇而已。
感谢您的关注。

我已经查看了这个线程,但是: 1)它很旧,也许自那时以来已经有新项目诞生了 2)它是特定于C#的(我不关心使用的语言) 3)似乎作者对添加的抽象层感到满意。我已经指明我正在寻找替代方案,而不是添加抽象层(我已经考虑过了)。 谢谢你的查看 :) - A. Grenouilloux
1
使用不同的网络堆栈,但这正是它的特点。具有不同实现例如TCP和不同API的不同网络堆栈。没有根本性的原因需要listenbind函数。 - usr
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - A. Grenouilloux
1
你应该看看XTI(https://en.wikipedia.org/wiki/X_Open_Transport_Interface),之前被称为STREAMS。 - Gil Hamilton
非常感谢,这正是我在寻找的。所以套接字是从BSD继承而来的!我不知道如何将此问题标记为已解决,因为您的回答是作为评论发布的... - A. Grenouilloux
还有另一种低层网络编程的替代API。在Plan 9操作系统中使用它。它使用dialannounceacceptreject函数。 - hurufu
1个回答

0

如果您不打算使用不同的网络堆栈,我认为答案是否定的。原因是套接字与网络堆栈紧密实现。例如,TCP和UDP都使用套接字保存未发送的数据和接收到的数据。您肯定可以实现一些API来从这些缓冲区读取数据并将数据写入其中。但我看不出这样做有什么优势,而且这些API确实是建立在套接字之上的。


不,它们并不是相同的东西。TLI界面与Socket界面没有任何关系。而Socket界面既用于Unix域套接字,也用于TCP和UDP,因此它与后者并没有紧密的耦合。 - user207421
我认为A. Grenouilloux正在寻求一种可在相同网络堆栈上运行的替代套接字实现。在Linux系统中,TCP或UDP直接将数据放入套接字缓冲区,因此如果您不更改网络堆栈,如何绕过这个问题呢? - user2760751

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