WEB开发网
开发学院手机开发Windows Mobile 开发 为什么.Net CF在调用HTTPS 的Web服务时失败 阅读

为什么.Net CF在调用HTTPS 的Web服务时失败

 2010-08-30 00:15:00 来源:WEB开发网   
核心提示:Step 1: 未加密的数据 其次,服务端调用EncryptMessage方法,为什么.Net CF在调用HTTPS 的Web服务时失败(2),在适当的位置为这个未加密的数据包进行加密,主要是给这个数据包加入了一个Header和Footer:Step 2: header加密后的数据footer这个Header的长度可

Step 1:

 

未加密的数据

 

其次,服务端调用EncryptMessage方法,在适当的位置为这个未加密的数据包进行加密。主要是给这个数据包加入了一个Header和Footer:

Step 2:

header

加密后的数据

footer

这个Header的长度可能是5bytes,那么Footer则要更长一些。对于这个数据包,它的长度肯定已经大于未加密的数据长度,在接下来的时候,它将被发送到接收端,并被执行DecryptMessage方法进行解密。

现在,当服务端把一个0长度的流加密成一个数据包发送到客户端时,.NetCF的SSL堆栈就产生问题了。

Step 1:

 

0 byte的未加密数据

 

Step 2:

header

非0 byte的加密后数据

footer

显然,加密前后,数据包长度已经发生变化。当这个数据包被发送到.NetCF客户端时,当前版本(译者按:2.0/3.5)的.NetCF将会解密这个数据包,并且返回一个0长度的数据流给调用者(译者按:我认为是上文中的Server端,下文提到的调用者也应该是Server端)。

通常意义上,对于一个网络中的Read方法而言(译者按:网络通信应该是互相往来,就如上文所提到的,服务端发送一个数据给客户端,那么客户端按照一定的规则返回一个结果到服务端,服务端使用Read方法进行接收),只有在收到数据后才执行,否则一直处于阻塞状态,如果收到的数据是一个0长度的数据流,那么则意味着这个socket连接已经被关闭。

Tags:为什么 Net CF

编辑录入:coldstar [复制链接] [打 印]
赞助商链接