代码之家  ›  专栏  ›  技术社区  ›  Ant

iOS didAcceptNewSocket需要不同的端口号

  •  1
  • Ant  · 技术社区  · 11 年前

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

    - (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值。 为什么?

    1 回复  |  直到 11 年前
        1
  •  1
  •   JeremyP    11 年前

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