有一个简单的套接字服务器监听端口12345
;
ServerSocket s = new ServerSocket(12345);
我想知道的是,有可能:
http
请求,则服务器将直接处理该请求,https
请求,则服务器将客户端套接字更改为SSLSocket吗?谢谢
是否可以将普通套接字更改为SSLSocket?
是的。在服务器端,以下工作:
ServerSocketFactory ssf = ServerSocketFactory.getDefault();
ServerSocket serverSocket = ssf.createServerSocket(12345);
// I've initialised an sslContext with a keystore, as you normally would.
Socket socket = serverSocket.accept();
SSLSocketFactory sslSf = sslContext.getSocketFactory();
// The host name doesn't really matter, since we're turning it into a server socket
// (No need to match the host name to the certificate on this side).
SSLSocket sslSocket = (SSLSocket) sslSf.createSocket(socket, null,
socket.getPort(), false);
sslSocket.setUseClientMode(false);
// Use the sslSocket InputStream/OutputStream as usual.
SSLSocketFactory.createSocket(Socket, ...)
默认情况下会将现有的Socket
转换为client-mode
SSLSocket
。由于握手仅在您开始使用I /
O流进行读/写时才开始,因此仍然是使用更改模式的时候setUseClientMode(false)
。
关于其余的问题:
我想知道的是,有可能:
- 如果客户端发送http请求,则服务器将直接处理该请求,
- 如果客户端发送https请求,则服务器将客户端套接字更改为SSLSocket吗?
再一次,是的,有可能。它有时被称为“ 端口统一
”,并在Grizzly和Glassfish中实现。
之所以起作用,是因为HTTP和TLS(HTTPS可以在其上工作)都是希望客户端首先进行通信的协议。因此,服务器可以检测到客户端最初发送的ClientHello
消息是TLS
消息(在这种情况下,它应该尝试进行TLS握手)还是纯HTTP请求(例如GET / HTTP/1.1
…)。
我怀疑使用端口统一更容易SSLEngine
,否则,可能很难在纯套接字上实现预读,您仍然可以通过进行转换SSLSocketFactory.createSocket(Socket, ...)
。
注意,尽管如此,这还是很不寻常的。
我有一个看起来像这样的字符串,由普通字符和中间的一个转义Unicode字符组成: < code>reb\u016bke 我想让Python将整个字符串转换成普通的Unicode版本,应该是< code > reb ske 。我试过用< code>str.encode(),但是好像没怎么用,显然decode已经不存在了?我真的卡住了! 编辑:repr的输出是< code>reb\\\u016bke
我想知道OpenCV是否能够将摄像头(dev/video1)设置为复合或S-video输入。 我使用的摄像头仅在复合输入中运行,但默认情况下,v4l2在S-Video输入中打开dev/video1。V4l2能够通过QT V4l2 utils应用程序从S视频转换为复合输入。 opencv正在使用v4l从相机捕获图像,我想在代码中使用OpenCV更改为复合输入。那有可能吗?如果不是,解决办法是什么?
问题内容: 我创建SQL Server查询,并具有带有记录的普通表,另一方面具有带有记录的临时表,并且此表不为空,并且所有字段都没有任何要加入的冲突 是否可以加入这两个不同类型的表? 问题答案: 是否可以加入这两个不同类型的表?(正常和临时) 是的,可以联接不同类型的表(永久表和临时表)。连接这些表没有不同的语法。 例如 永久表: 临时表: 联接两个表: 看看这个SQLFiddle
问题内容: 我是网络编程的新手。我有兴趣通过Java服务器和C客户端之间的套接字建立网络连接并保持连接无限打开的可能吗?我想保持连接打开状态以在客户端之间交换XML数据。 问题答案: 从理论上讲,可以无限期地打开服务器套接字;但是,使用客户端套接字是不可能的。主要原因是因为客户端套接字取决于处理数据的服务器端套接字,并且服务器套接字可能会关闭连接。 尽管可以无限期地保持连接打开,但实际情况通常会确
问题内容: 是否可以“监视”指令上的ui更改?像这样的东西: 问题答案: 是。您可以使用,如果你在属性利用插值。 但是,如果这不是一个插值属性,并且您希望它可以从应用程序中的其他位置更改(绝对不建议这样做,请阅读Common Pitfalls ),那么函数可以返回: 无论如何,对您来说最好的方法可能是更改更改元素类的代码。它何时更改?
我有以下信息: 我希望将权重和override_weight(可选字段)的类型更改为,因此我所做的是流动: 我的问题是,假设我有以前的protobuff消息编译器为旧消息编译的旧消息,我能将它们解析为新消息吗?文件对此非常模糊: “将可选字段移入或移出其中一个:消息序列化和分析后,您可能会丢失一些信息(某些字段将被清除)。但是,您可以安全地将单个字段移入新字段中,并且如果已知只设置了一个字段,则可