2010-02-15 3 views
0

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

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

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.

ответ

0

Возможно, что локальный хост переходит на IPv6-адрес. Сначала попробуйте использовать http://127.0.0.1:3490/, прежде чем обращаться к NSURLConnection.

2

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

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

+0

Спасибо, человек, ты мне очень помог !!!! – Alex1987