我正在尝试与CUPS打印服务器通信,该服务器的所有连接都设置了“需要加密”。这意味着,当您尝试建立到它的连接时,它会要求将连接升级到TLS加密的连接,而Cups4j和Jspi似乎都无法处理它。
有没有办法从Java应用程序(使用这些库或其他库)连接到这样的服务器?
您的主要问题是,CUPS/IPP是使用HTTP到TLS升级的罕见协议之一,如RFC 2817所述。(https:///code>根本不使用,请参阅RFC 2818。)这样做的结果是,您会发现现有库对该升级的支持要少得多。
原则上,将普通的套接字升级为SSLSocket并不难。然而,由于IPP依赖于HTTP,您的库使用的库可能不支持这一点,因为很少有HTTP库支持RFC 2817。
我没有看过Cups4J,但Jspi显然依赖于Apache HTTP客户端(可能是3.x版)。
2011年在Apache HTTP客户端邮件列表上讨论了对RFC 2817的支持,但不清楚是否有任何支持进入了该库。无论如何,Jspi代码比这还要老,所以可以公平地假设它不会工作。
一种可能的解决方法:
一些IPP服务器似乎通过升级(RFC 2817)或初始连接(RFC 2818,传统的https:///code>方式)支持这两种TL。也许你的也是。检查它是否侦听TLS连接的另一个端口(例如,通过将HTTPS客户端指向它)。(如果服务器使用端口统一,也可以是同一个端口。)
如果可行,请快速修补IppHttpConnection。Jspi中的java应该使您能够使用https连接,而不是http连接:
private static URI toHttpURI(URI uri) {
if (uri.getScheme().equals("ipp")) {
String uriString = uri.toString().replaceFirst("ipp", "http");
我不确定
ipp:///code>是否是标准的,但您可以使用相同的技巧,在方案中用https:///code>替换
ipp:///code>。其余部分应由底层HTTP库自动处理。(您可能也必须确保您的证书是可信的,但这是另一个问题。)
我想写一个非常简单的API。当我使用邮差API时。我想创建android应用程序,但我的应用程序崩溃了。为什么?哪里是错误
现在我的ServerSocket是这样的 一切正常,客户端连接,发送一些数据,服务器读取它,但我的问题是如何从我的服务器发送消息到所有的客户端?我目前保存客户端上的ArrayList,所以我可以只是循环,ArrayList打开一个作家和刷新它,但我想发送的数据,我得到我的ClientConnection类 我应该如何处理这个代码?在服务器类上完成的所有操作?或
我有两台固定IP地址的linux计算机: 打印服务器,通过CUPS共享连接的打印机 (服务器的IP地址为“192.168.1.2”,打印机称为“test_printer”。) 不幸的是,通过CUPS的打印机传播似乎无法可靠地工作(可能是由于网络结构)。 我可以将打印作业直接从python程序发送到CUPS打印服务器吗? 如果是,你能提供一个小例子吗? 理论上,我只会将格式正确的数据发送到IP地址端
在我的Android应用程序中,我必须与https web服务通信并读取响应。 我已经通知服务器使用TLS 1.2配置SSL。 我正在使用以下示例代码与服务连接(https get Request),但只有运行Android 5.0或更高版本的设备才能成功通信和读取响应...... 该版本(Android 5.0)下的所有其他设备无法通信,在尝试建立连接时引发IOException。。。 或 问题
Web主要围绕HTTP的请求/响应范例构建。客户端加载网页,然后在用户点击下一页之前没有任何操作。大约在2005年,AJAX开始让网络感觉更有活力。仍然,所有HTTP通信都由客户端引导,这需要用户交互或定期轮询以从服务器加载新数据。 使服务器能够在知道新数据可用的瞬间将数据发送到客户端的技术已存在很长时间了。它们的名称如“Push”或“Comet”。 将套接字引入Web Websocket规范定义
我目前完成的工作: 设置一个带有杯子的树莓圆周率,插入Dymo Labelwriter 450 点击以下链接:设置树莓圆周率。如果我通过家庭网络上的Windows安装网络打印机,这可以在我的本地计算机(Windows)上正常工作并打印 已从成功打印打印作业。NET内核通过。这主要是为了测试。这是当USB标签打印机直接插入我的机器 有一个。从docker容器运行的NET Core(3.1)Web A