【发布时间】:2013-10-22 15:16:03
【问题描述】:
我目前正在 Mac 上的 Objective-C 中的服务器上工作,该服务器在特定端口上侦听传入数据。它已经适用于基于 NSStreams 的双向未加密数据传输。
在下一步中,我想通过 SSL/TLS 保护连接。目前我正在关注他们在this 页面上的文档中描述的苹果方法。在概述中,他们描述了建立 SSL 连接的典型序列。
我现在失败的地方是我必须给出表单的指针
typedef OSStatus (*SSLReadFunc) (
SSLConnectionRef connection,
void *data,
size_t *dataLength
);
在为 SSL-Connection 设置 I/O 功能的方法中,以便负责的对象可以调用这些方法来读取和写入我的流。这两个方法我已经写好了
// Called by the secure transport to write data on the stream
-(OSStatus)sslWriteCallbackFunction:(SSLContextRef)context data:(const void *)data dataLength:(size_t)dataLength sizeOfProcessedData:(size_t *)processed{
processed = (size_t *)[_writeStream write:data maxLength:dataLength];
if (processed < 0)
return errSSLProtocol;
else if (processed==0)
return 0;
else
return errSSLWouldBlock;
}
// Called by the secure transport to read data from the stream
-(OSStatus) sslReadCallbackFunction:(SSLContextRef)context data:(const void *)data dataLength:(size_t)dataLength{
uint8_t buffer[dataLength];
NSInteger err = [_readStream read:buffer maxLength:dataLength];
if (err < 0)
// Error
return errSSLProtocol;
else if (err==0)
// All bytes have been read
return 0;
else
// err corresponds to the number of bytes read, so there are still bytes available
dataLength = err;
return errSSLWouldBlock;
}
并希望将它们设置在带有签名的方法中
OSStatus SSLSetIOFuncs (
SSLContextRef context,
SSLReadFunc readFunc,
SSLWriteFunc writeFunc
);
方法sslReadCallbackFunction分别通过readFunc和write方法传递。
现在,我怎样才能创建指向上述表单的两种方法之一的指针。我已经尝试了很多,如果有人可以帮助我或指出正确的方向,我将非常感激。我用了选择器,只是在方法名前面加了一个&,用的是self的方法,....
感谢任何帮助,请注意我是 Objective-C 的新手 ;)
【问题讨论】:
标签: objective-c pointers networking ssl