1

我正在使用 AsyncSocket 并在特定端口上侦听。我正确地获得了一个带有新套接字的 didAcceptNewSocket 委托回调。当我为新套接字调用本地时,它与我的监听套接字具有相同的端口号。我期待一个不同的端口。

- (void)createListenSocket 
{
    NSError *error;
    listenSocket = [[AsyncSocket alloc] initWithDelegate:self];
    [listenSocket acceptOnPort:MY_PORT_NUMBER error:&error];
}

- (void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket
{
    NSLog(@"new connected socket: local port: %d, connected port: %d",  
        [newSocket localPort], [newSocket connectedPort]);

这将打印本地端口的 MY_PORT_NUMBER 值。为什么?

4

1 回答 1

1

连接由两个 IP 地址和两个端口号定义。如果集合是唯一的,则它是一个不同的连接,因此将两个远程设备连接到相同的本地 IP 地址和端口号是完全有效的,前提是远程号码是唯一的。

于 2013-10-28T14:14:03.910 回答