首页 文章

localhost上的iOS TCP客户端

提问于
浏览
0

我想在iOS上的 localhost 上设置TCP客户端 . 我正在使用GCDAsyncSocket但我收到NSPOSIXErrorDomain错误:

  • 代码= 61 "Connection refused"或

  • 代码= 49 "Can't assign requested address"

执行:

asyncSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
uint aPort = (arc4random() % 1000) + 1024;
NSError *err = nil;
if (![asyncSocket connectToHost:@"localhost" onPort:aPort withTimeout:-1 error:&err])
{
    NSLog(@"Client setup error on port:%u %@", aPort, err);
}

代表:

-(void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)err
{
    NSLog(@"Client socketDidDisconnect");
    if (err) {
        NSLog(@"ClientRelay socket error: %@", err);
    }
}

这可以在localhost上完成吗?

1 回答

  • 0

    这可以在localhost上完成 . 但是你对端口有一些误解 .

    端口 - 要 Build 与服务器的连接,您需要其IP地址和端口号 . 端口号是IP协议确定将哪个数据包发送到哪个应用程序的方式 . 因此使用随机端口将不起作用 .

    使用GCDAsycSocket连接到localhost

    • 创建GCDAsycSocket的新实例

    • 使用host参数 @"localhost" 调用 - (BOOL)connectToHost:(NSString *)host onPort:(uint16_t)port error:(NSError **)errPtr; 以开始接受连接 . 对于端口,请使用大于6000的数字 .

    • 创建一个新实例GCDAsycSocket

    • 调用 - (BOOL)connectToHost:(NSString *)host onPort:(uint16_t)port error:(NSError **)errPtr; ,主机为 @"localhost" ,端口为您在步骤2中选择的端口 .

    • 你应该可以连接 .

相关问题