iphone SDK / Mac - проблема с сокетами - PullRequest
0 голосов
/ 15 февраля 2010

Моя программа состоит из 2 частей - сокета сервера, работающего в другом потоке, и клиента для тестирования сервера. Я на 99,9% уверен, что сервер написан правильно (потому что я проверил его с помощью клиентского сокета), и все, что он делает, это возвращает «привет мир» в качестве ответа. Сервер сидит на порту 3490.

Теперь я попытался вызвать сервер следующим образом:

NSData *data = [[NSData alloc] initWithContentsOfURL:[NSURL fileURLWithPath:@"http://localhost:3490"]];
    NSString *msg = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(msg);

Но я не получил ответа. Я подозреваю, что проблема с адресом http://localhost:3490

Эта проблема появляется на iPhone и Mac.

Есть идеи?

Спасибо

Alex

У меня эта проблема на iphone и на mac.

Ответы [ 2 ]

2 голосов
/ 15 февраля 2010

Во-первых, вы почти наверняка хотите использовать +[NSURL URLWithString:] вместо +[NSURL fileURLWithPath:].

Во-вторых, поскольку -[NSData initWithContentsOfURL:] скрывает так много того, что происходит для установления соединения, вы можете подумать о переключении на NSURLConnection, которым вы управляете сами, хотя бы временно. Методы делегатов, которые он использует, дадут вам больше видимости / контроля над различными этапами процесса. (А также не блокировать поток, в котором вы запускаете этот код.)

0 голосов
/ 15 февраля 2010

Возможно, что localhost преобразуется в адрес IPv6. Попробуйте сначала вместо NSURLConnection.

использовать http://127.0.0.1:3490/.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...