套接字编程,rmi和Servlet之间有什么区别。什么时候使用什么?
套接字API是Java应用程序与网络交互以及与远程客户端和服务进行扩展的低级(传输级)抽象。套接字和相关的API支持可靠的字节流和不可靠的消息传递服务。它们通常用于TCP
/ IP和UDP / IP,尽管可以(至少在理论上)支持其他网络协议栈。
RMI是用于在Java应用程序之间实现应用程序级网络的框架和协议系列。它将网络交互建模为针对存在于其他应用程序中的对象的Java方法调用。此模型需要一种机制(通常是名称服务器),该机制允许一个应用程序“发布”对象,以便另一个应用程序可以引用它们。这(以及RMI端口通常默认情况下被阻止的事实)意味着在设置基于RMI的应用程序时需要进行大量的配置工作。
Servlet是API的集合, 主要
用于实现HTTP通信的服务器端。即用于在Java中构建Web服务器。它们(或更准确地说是运行它们的Web容器)负责处理HTTP协议的细节,因此程序员(理论上)仅需要处理“应用程序”问题。
实际上,servlet开发人员和/或部署人员必须处理其他事情,例如将URL映射到servlet到对象,安全性和身份验证。另外,Servlet仅处理HTTP交互的服务器端…客户端必须由不同的API处理。(您还可以辩解说,Servlet本身做不到足够的功能,这证明了建立在Servlet之上的Web应用程序框架的泛滥。)
简单来说:
socket_read和socket_recv之间有什么区别?我正在尝试使用PHP套接字,但使用socket_read时收到了以下警告: 请帮帮我!
问题内容: 我试图理解SocketChannels和NIO。我知道如何使用常规套接字,以及如何制作一个简单的每客户端线程服务器(使用常规阻塞套接字)。 所以我的问题是: 什么是SocketChannel? 当使用SocketChannel而不是Socket时,我还能得到什么呢? 通道和缓冲区之间是什么关系? 什么是选择器? 文档中的第一句话是。那是什么意思? 我也阅读了本文档,但是不知何故…… 问
线程“main”java.net.ConnectException:连接超时:在java.net.dualStackplainsockeTimpl.Connect0(本机方法)在java.net.dualStackplainsockeTimpl.socketConnect(DualStackplainsockeTimpl.java:69)在java.net.abstractplainsockeTi
我最近一直在玩套接字,但是我遇到了一个问题…当我从服务器接收数据时,我得到一个“java.net.套接字异常:套接字关闭”异常。我没有在任何地方关闭套接字,事实上,我唯一使用关闭()的地方是扫描仪上从System.in读取文本; 以下是我的代码: 客户: 服务器: 数据包发送者: 客户端接收器: 数据包接收器:
问题内容: 如何创建SSL套接字连接? 我真的需要创建密钥库吗?该密钥库应该与我所有的客户端应用程序共享吗? 我用以下代码创建了一个服务器: 我用以下代码在android上创建了一个客户端: 但是当我尝试连接时,会引发以下错误: 问题答案: 您需要一个证书来建立ssl连接,您可以在密钥库中加载证书,也可以加载证书本身。我将显示一些有关keystore选项的示例。 您的代码需要一些参数才能运行: 您
我有一个UDP服务器,它必须同时为IPV4和IPV6地址上的客户端提供服务。我创建了一个IPV6套接字来同时为IPV4和IPV6客户端服务。 服务器在第一次通信时存储客户端的IPAddress。如果是IPV4客户端,则存储为IPV4地址;如果是IPV6客户端,则服务器存储为IPV6地址。对于以后的所有通信,它检查存储是否已知(存储)该客户端,然后相应地执行操作。为了将客户端地址与存储的地址进行比较
问题内容: 是否可以在IP协议下使用ICMP套接字?也许像: 我应该在 字段中输入什么?我看到了一些使用SOCK_RAW的示例,但是这是否会阻止OS处理IP协议呢? 还有一件事。由于该协议不涉及任何端口,操作系统如何知道他应该向哪个进程发送ICMP数据报? 问题答案: 是的,这是可能的,因为该命令执行ICMP。 要找出所涉及的系统调用,您可以使用该命令(在根目录下)。 您也可以浏览该命令的源代码,