草庐IT

ssl_accept

全部标签

c++ - 带阻塞套接字的 SSL_accept

我制作了一个带有SSL和阻塞套接字的服务器。当我连接telnet时(因此它不进行握手),SSL_accept会无限期地阻塞并阻塞每个新的握手/接受(以及根据定义的新连接)。我该如何解决这个糟糕的问题? 最佳答案 为什么不在调用SSL_accept()之前将套接字流设置为非阻塞模式呢?,然后阻止类似select()的内容如果SSL_accept()返回SSL_ERROR_WANT_READ或SSL_ERROR_WANT_WRITE超时?或者,您可以在调用SSL_accept()之前阻止select()。要么应该工作。这样你至少可以限制

sockets - 做socket编程时accept函数一定要加锁吗?

所有worker都继承了父服务器的套接字描述符,并用它来接受客户端请求。子进程作为自治进程“并行”运行,并使用带有服务器套接字描述符的接受函数。接受客户端请求时,我是否必须为接受功能使用锁定和解锁机制,或者操作系统为我做这件事?这里的想法是多个进程使用公共(public)服务器套接字描述符来接受客户端请求。我是否必须使用互斥机制来屏蔽它以避免竞争条件或死锁?请注意我在accept函数中使用了非阻塞I/O。我有以下代码:for(;;){intclient=accept(...);if(client我应该使用类似的东西吗:for(;;){lock();intclient=accept(..

http - 什么控制 TCP 段是传递到传递给 accept() 的套接字还是传递给 accept() 返回的套接字?

在TCP套接字代码中,我们创建了2个套接字。第一个接受新连接,第二个接受来自客户端的数据并在新连接建立时创建。TCPheader中的哪个控制位允许服务器知道将此段传递给ServerSocket(发送连接请求的那个)还是Socket(连接建立后为通信创建的套接字)? 最佳答案 WhatcontrolbitintheTCPheaderallowstheservertoknowwhethertodeliverthissegmenttotheServerSocket(theonetowhichconnectionrequestsaresen

C# 通过 TCP 使用 SSL 发送请求不起作用

这是我的代码,用于发送以SSL编码的TCP请求并从服务器获取答案,但它不起作用。调试和trycatch异常都没有用。publicvoidSendRequest(stringrequest){byte[]buffer=newbyte[2048];intbytes=-1;sslStream.Write(Encoding.ASCII.GetBytes(request));bytes=sslStream.Read(buffer,0,buffer.Length);Console.WriteLine(Encoding.ASCII.GetString(buffer,0,bytes));}我是从sta

ssl - URL 如何转换为 TCP/IP 请求?

最近一位同事告诉我,第三方可以看到HTTPSGET请求的查询字符串,我打算证明他是错的。但是很难找到任何对URL解析的明确描述。我的理解是URL只是零碎地发送,域传递到IPheader,端口传递到TCPheader等。在HTTPSGET的特定情况下,这意味着查询字符串将仅驻留在HTTPheader中,而HTTPheader又驻留在TLS正文中,后者是端到端加密的,因此是安全的。那么,我的问题是双重的:首先,我对HTTPSGET查询字符串的特殊情况是否正确?其次,任何人都可以向我提供URL的一般剖析,并着眼于它的各个部分如何转换为TCP/IP请求吗? 最佳答案

c++ - 如何检测之前连接的 SSL/TCP 套接字上的互联网断开连接?

这个问题在这里已经有了答案:HowtodetectthatanetworkcablehasbeenunpluggedinaTCPconnection?(3个答案)关闭6年前。我有一个线程在基于select()的SSL_read()上阻塞。主线程在需要时使用SSL_write()写入。在单元测试的过程中,我发现了一个问题:客户端TCP套接字connect()到SSL(TLS)上的服务器一段时间后,禁用互联网在客户端TCP/SSL套接字上写入一些数据即使没有互联网,SSL_write()也会返回正确的写入字节数,而不是0或某些错误。这种互联网断开是任意的,既不太高也不太低。我的期望是,每当

java - 我如何知道服务器是否支持 SSL?

我需要连接到主机,如果它处于离线状态,我会收到TCP超时(没关系),如果它在线且SSL可用,我将进入登录阶段。问题是,当服务器在线时,在配置的TCP端口上接受连接,但随后不响应SSL握手,我们的应用程序无限期地等待响应。我正在使用由JNI封装的IBMHACL(c++)来访问服务器。我如何测试(在WindowsXP下的Java或C++中)服务器端SSL的可用性?我可以手动启动握手,获得第一个服务器响应,然后关闭TCP套接字吗?还是我需要完成握手(我该怎么做?)谢谢。 最佳答案 try{SSLContextctx=SSLContext.

java - Android 手机上的 TCP 服务器在 .accept() 处崩溃

我是android的新手,但不是套接字。我有一个带有运行UAVServer线程的按钮的GUI。当我点击它时,服务器应该监听客户端。代码行...Socketclient=serverSocket.accept();...应该阻塞直到有客户端连接。但它只是崩溃说“不幸的是,DroidUAV已停止。”publicclassUAVServerextendsThread{privateStringTAG=UAVServer.class.getSimpleName();@Overridepublicvoidrun(){ServerSocketserverSocket;try{serverSocke

Delphi Indy - 如何为 Indy 10 的 SSL-TCP 客户端/服务器链接获取 SSL 证书

我对SSL和这些加密的东西完全陌生,但我需要让在移动设备上运行的客户端和服务器DelphiXE6应用程序进行通信。必须对TCP通信进行安全加密。首先,我简单地编写了基于Win32客户端和服务器交换字符串的Delphi/IndyTIdTCPServer/TIdTCPClient。(出自SourceForge上的indy10clieservr演示:svn://svn.code.sf.net/p/indy10clieservr/code/1_sampleSimpleStringExchange)我试图通过在服务器上添加TIdServerIOHandlerSSLOpenSSL组件和在客户端上添

c - 带有 TCP 流的 TLS/SSL 中的 ssl_read() 不返回由 BIO_write() 写入的整个缓冲区

以下代码部分的目的是轮询套接字fd集,如果数据(ssl加密)可用,则读取它并通过openssl库解密。底层传输层是TCPStream,所以数据以流的形式出现(不是数据包)。现在,如果从对等方快速连续发送多个数据包(假设2个长度为85字节的数据包),则TCP接收将在同一缓冲区中返回两个数据包,接收字节数为170。因此,我们有一个缓冲区,其中包含2个ssl加密数据包(或n个数据包)。对于ssl解密,我们需要调用BIO_write()将缓冲区写入ssl_bio,然后调用ssl_read()来检索解密的缓冲区。但是,尽管BIO_write()正在向bio中写入170个字节,但ssl_read(