Прослушивание CocoaASyncSocket на iPhone, получающем соединение, но новый сокет не вызывает делегата

Я пытаюсь реализовать базовую передачу сообщений между двумя устройствами, указав IP-адреса. Когда одно устройство сообщает своему прослушивающему сокету прослушивание следующим образом:

UInt16 port = 59647;
NSError *err = nil;
[socket acceptOnPort:port error:&err];

Делегат didAcceptNewSocket вызывается правильно и должен возвращать новый сокет на подключаемый IP:порт. Однако, насколько я могу судить, он делает это, тогда новый сокет должен вызывать didConnectToHost, чего, насколько я могу судить, это не так.

didConnectToHost реализован правильно, так как устройство, которое инициирует соединение со своим сокетом, правильно вызывает его после установления соединения.

Я ничего не делаю в didAcceptNewSocket, кроме нескольких NSLogs и устанавливаю старый прослушивающий сокет на новый (поскольку он не нужен после, и назначение его другой переменной до этого ничего не изменило и не должно).

Что может привести к тому, что мой новый сокет на стороне прослушивания не вызовет этого делегата?


person JKomusin    schedule 19.11.2010    source источник


Ответы (1)


Поскольку вы имеете дело с клиентом и сервером, важно понимать, что только клиент будет вызывать метод делегата socket:didConnectToHost:port:, поскольку именно клиент подключается к хосту (а не наоборот).

На сервере вызывается метод делегата socket:didAcceptNewSocket: с прослушивающим сокетом в качестве первого аргумента.

person Bart Jacobs    schedule 11.04.2013
comment
Прошло много лет с тех пор, как я на самом деле сделал это, но задним числом это кажется разумным. - person JKomusin; 16.04.2013