没有 iOS 个套接字框架可以连接到服务器套接字

No iOS socket frameworks can connect to server socket

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

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。还是没有。

有人知道为什么吗?

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

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