localhost上的iOS TCP客户端

时间:2015-07-22 11:17:15

标签: ios

我希望在iOS上的 localhost 上设置TCP客户端。 我使用 GCDAsyncSocket ,但我收到了NSPOSIXErrorDomain错误:

  • 代码= 61"拒绝连接"或
  • 代码= 49"无法分配请求 地址"

实现:

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 :(得分:0)

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

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

使用GCDAsycSocket

连接到localhost
  1. 创建GCDAsycSocket的新实例
  2. 使用主机参数- (BOOL)connectToHost:(NSString *)host onPort:(uint16_t)port error:(NSError **)errPtr;调用@"localhost"以开始接受连接。对于端口,请使用超过6000的数字。
  3. 创建新实例GCDAsycSocket
  4. - (BOOL)connectToHost:(NSString *)host onPort:(uint16_t)port error:(NSError **)errPtr;为主机呼叫@"localhost",并将端口作为您在步骤2中选择的端口。
  5. 你应该可以连接。