2010-11-19 1 views
3

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

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

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

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

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

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

ответ

1

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

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

+0

Прошло много времени с тех пор, как я на самом деле это сделал, но это кажется разумным рассуждением в ретроспективе. – JKomusin