3
我是OpenSSL的新手。我知道需要在循环中调用BIO_write(BIO * b,const void * buf,int len),但我不完全确定是否正确使用它。我已经写了这样的功能:C - 如何正确使用OpenSSL的BIO_write()
int32_t SendPacket(BIO * const pBio, const unsigned char * const pPacket, const int nPacketLength)
{
int32_t nPos = 0;
if (!pBio || !pPacket || !nPacketLength)
return -1;
while (nPos < nPacketLength)
{
int32_t nNumberOfBytesWritten = BIO_write(pBio, &pPacket[nPos], nPacketLength - nPos);
if (nNumberOfBytesWritten <= 0)
{
if (!BIO_should_retry(pBio))
return -1;
}
else
{
nPos += nNumberOfBytesWritten;
}
}
return nPos;
}
而且我想使用它像这样的:
if (SendPacket(pBio, pPacket, nPacketLength) == nPacketLength)
{
// Packet sent correctly.
}
else
{
// Error occurred.
}
是否功能看起来是正确的?任何反馈意见。
功能看起来不错。你有没有遇到任何问题? – doptimusprime
除nPacketLength不应该是-1。 – doptimusprime