首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >套接字与普通网络API的关系

套接字与普通网络API的关系
EN

Stack Overflow用户
提问于 2011-01-24 17:13:26
回答 2查看 1.1K关注 0票数 2

今天早上,我问了一个与插座有关的问题,但这是另一种动物,所以我决定做一个单独的帖子。

我现在很清楚什么是套接字,以及它们的用途。我试图了解它们与Java、Java以及所谓的Netty或MINA之类的网络API之间的关系。

  1. 套接字是所有基于Java的网络的基础吗? NIO是否是基于Java的网络的基础(也就是说,是API为更高的框架(如Netty或MINA)提供套接字结构)?如果不是,那么Java网络功能的基础是什么?
  2. 是否可以使用套接字(据我理解,或网络层构造)发送(按字节计算)符合较高协议的消息,如TCP或UDP、HTTP、FTP等?如果是这样的话,我可以想象开发团队可能会创建自己的HttpProtocol库,或者SSLProtocol库,是吗?
  3. 我的理解是,NIO是所有Java网络的基础,RMI、Netty、MINA等都将NIO框架扩展到自己的实现中。这是正确的吗?如果没有,这些框架如何相互关联?

再次感谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-24 20:01:52

套接字是所有基于Java网络的基础,

对于IP协议,是的。可能有一些特殊的库,例如用于串口通信的JavaComm,以及用于各种非套接字的电信协议的贾恩

NIO是基于Java的网络的基础吗?

不完全是,插座是。见前面的答案。NIO是在套接字和其他东西的基础上建立起来的。最重要的部分可能是NIO允许您在一个线程中侦听多个套接字上的事件,并执行非阻塞IO。Netty和Mina利用了NIO。

NIO代表New /O,是Java1.4中引入的用于执行IO的新API。不过,除了socket IO之外,它还做了很多其他的事情。可以说,NIO将允许您以更复杂的代价更有效地执行套接字IO。

是否可以使用套接字(据我理解,或网络层构造)发送(按字节计算)符合较高协议的消息,如TCP或UDP,

不是的。套接字允许您访问诸如TCP或UDP之类的传输协议(实际上,Java中只有TCP和UDP,将来可能也是SCTP )。您可以构建在TCP/UDP之上工作的东西,而不是自己实现TCP/UDP (除非您希望在TCP或UDP之上实现一个IP堆栈--这就是几个VPN或调优协议所做的)。

HTTP,FTP等等?

是的,这些通常是在TCP之上工作的,您可以通过使用java中的套接字来实现HTTP、FTP和其他运行在TCP/UDP之上的协议--这就是套接字的用途。

票数 3
EN

Stack Overflow用户

发布于 2011-01-24 19:37:02

套接字是用于网络的Java基本构建块。它们只允许您执行基本操作:打开连接(TCP或UDP)、写入或读取字节以及关闭连接。它们还通过抛出异常来处理失败案例。在OSI模型中,这是第四层(传输)。

更高级别的API构建在套接字之上,允许执行更有趣的任务,如HTTP连接或SSL通信。

Java是第一个Java的新版本。就网络而言,它实际上为非阻塞套接字带来了一个新的API。

更高级别的API构建在Java和/或Java之上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4784873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档