objective-c - Objective-C 中的 NSSocketPort 连接

标签 objective-c cocoa

我正在尝试使用此代码建立套接字连接

//Server code
- (void)startServer{
    sockPort = [[NSSocketPort alloc] initWithTCPPort:9786];
    NSConnection *theConnection;
    theConnection = [[NSConnection alloc] initWithReceivePort:sockPort sendPort:nil];
    theConnection=[[NSConnection alloc] init];
    [theConnection setRootObject:self];
    [theConnection registerName:@"Server Connection"];
}

//Client Code
-(void)startClient{
     NSConnection *conn=[NSConnection connectionWithReceivePort:nil sendPort:sockPort];
     NSLog(@"Socket descriptor=%d",[sockPort socket]);
}

控制台

Socket descriptor=-1

为什么套接字描述符显示-1?

最佳答案

发布的代码没有特别的意义 - 但如果我们假设代码的客户端更传统一点并且看起来像:

- (void)startClient
{
    NSSocketPort *sockPort = [[NSSocketPort alloc] initRemoteWithTCPPort: 1234
                                                                    host: @"hostname"];
    NSConnection  *connection = [NSConnection  connectionWithReceivePort: nil 
                                                                sendPort: sockPort];
    ....

这里 sockPort 上的套接字应该是 -1,因为它并不代表该进程中的套接字,而是代表此类套接字应该连接到的目的地。

更有趣的是连接对象上的 receivePort 和 sendPort 属性。

关于objective-c - Objective-C 中的 NSSocketPort 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8587665/

相关文章:

ios - Objective-C 类的通用初始化程序

objective-c - 是否有 iTunes Connect Game Center REST API?

iphone - 如何将核心数据包含到 Xcode 中已创建的 iOS 项目中?

objective-c - 为什么 NSClassFromString 在这两种情况下返回 nil 或不返回 nil?

cocoa - NSWindow,使用 Core Animation 时的奇怪角落

objective-c - 如何在Mac Cocoa App中实现快捷键输入?

objective-c - 限制多个 UITextField 的长度

objective-c - 像 iTunes 11 一样绘制 NSTableView 交替行

objective-c - 将带有数学表达式的字符串转换为 float

objective-c - 计算 '$' 在字符串中出现的次数( Objective-C )