如何在iOS中建立对等连接?

如何在iOS中建立对等连接?,ios,iphone,objective-c,voip,Ios,Iphone,Objective C,Voip,我想为iPhone实现一个Voip应用程序 如何使用流式套接字编程在用户之间建立点对点连接 任何可用的源代码。您不能;当您的两个设备的IP都更改(都移动到不同的网络)时会发生什么情况?请尝试GCDAsyncSocket 或者你也可以试试这个 定义类属性: NSInputStream *inputStream; NSOutputStream *outputStream; 初始化流 CFReadStreamRef readStream; CFWriteStreamRef writeStream;

我想为iPhone实现一个Voip应用程序

如何使用流式套接字编程在用户之间建立点对点连接


任何可用的源代码。

您不能;当您的两个设备的IP都更改(都移动到不同的网络)时会发生什么情况?

请尝试GCDAsyncSocket

或者你也可以试试这个
定义类属性:

NSInputStream *inputStream;
NSOutputStream *outputStream;
初始化流

CFReadStreamRef readStream;
CFWriteStreamRef writeStream;

CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)kScannerIP, kScannerPort, &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];
实现委托方法以处理传入数据:

- (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent {
    switch (streamEvent) {
        case NSStreamEventOpenCompleted:
            break;

        case NSStreamEventHasBytesAvailable:
            break;

        case NSStreamEventHasSpaceAvailable:
            break;

        case NSStreamEventErrorOccurred:
            break;

        case NSStreamEventEndEncountered:
            break;

        default:
            NSLog(@"Unknown event");
    }
}
最后关闭您的网络:

[inputStream close];
[outputStream close];
[inputStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
inputStream = nil;
outputStream = nil;

当然,您可以使用中央服务器,但它不是对等的,而是两个服务器-客户机连接。如果服务器仅用于发送用户地址,然后它们可以对等,则问题应该从以下内容开始“假设在我的客户机-服务器体系结构中,我能够将IP地址与iOS设备通信,并且仅使用POSIX调用,如何…”。因为在不同的情况下,问题的答案会有所不同(如果此代码仅用于Objective-C和POSIX调用以实现可移植性,则会出现CFNetworking)@visualication您的方法需要连接主机和端口。我的问题是“如何在另一台iPhone上使用我的应用程序连接到特定用户?”?“我的意思是如何为该用户获取主机和端口?通过您自己的服务器,该服务器了解用户及其ip。在这种情况下,您的用户将是主机。您必须跟踪用户及其IP。或者你想用静态IP实现这一点?我想那是不可能的。。。