1

我正在尝试使用套接字框架连接到我拥有的套接字。我可以使用原始套接字代码很好地连接,例如:

uint portNo = 9900;
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"123.456.789.159", portNo, &readStream, &writeStream);
inputStream = (__bridge NSInputStream *)readStream;
outputStream = (__bridge NSOutputStream *)writeStream;

[inputStream setDelegate:self];
[outputStream setDelegate:self];

[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
[outputStream open];

但是当我尝试使用任何框架时,我都会遇到错误,我完全不知道为什么。我试过 SocketRocket 和 Jetfire。这是我尝试过的在 SocketRocket 中连接的代码:

_webSocket.delegate = nil;
[_webSocket close];

_webSocket = [[SRWebSocket alloc] initWithURL:[NSURL URLWithString:@"wss://123.456.789.159"]];
_webSocket.delegate = self;

NSLog(@"Opening Connection...");
[_webSocket open];

我也尝试过添加端口号。

_webSocket = [[SRWebSocket alloc] initWithURL:[NSURL       URLWithString:@"wss://123.456.789.159:9900"]];

还尝试了 http、https、ws。依然没有。

有人知道为什么吗?

4

1 回答 1

0

WebSocket 是一种协议,用于在 HTTP 之上引入类似原始套接字的功能。您的服务器公开的套接字可能不支持 WebSocket 协议。

如果您想在 iOS 上使用更高级别的 API 进行原始套接字编程,CocoaAsyncSocket可能是您的一个不错的选择。

于 2017-03-29T03:30:47.983 回答