iOS didAcceptNewSocket 期望不同的端口号

Posted

技术标签:

【中文标题】iOS didAcceptNewSocket 期望不同的端口号【英文标题】:iOS didAcceptNewSocket expected different port number 【发布时间】:2013-10-28 12:04:20 【问题描述】:

我正在使用 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 值。 为什么?

【问题讨论】:

我现在开始怀疑让两个套接字都使用相同的端口号是否有效。我假设一个套接字总是有一个唯一的端口号。这种想法对吗? 【参考方案1】:

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

【讨论】:

以上是关于iOS didAcceptNewSocket 期望不同的端口号的主要内容,如果未能解决你的问题,请参考以下文章

Jest - Externalise 扩展期望匹配器

如何验证来自 socket.io 的数据包?

打造符合用户期望的应用质量

单元测试不了解 XCTest 期望的异步 UI 代码?

了解移动用户的隐私期望:一种基于推荐的Crowdsourcing方法

JS IOS Safari - 在 Go 按钮上打开新标签