Установите сокет подключения Iphone с сервером примера от Ray Wunderlich - PullRequest
0 голосов
/ 28 марта 2012

http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-server

Со стороны Python Server

     from twisted.internet.protocol import Factory, Protocol

     from twisted.internet import reactor


  class IphoneChat(Protocol):
def connectionMade(self):
    print "a client connected"


 factory = Factory()
 factory.protocol = IphoneChat
 reactor.listenTCP(80, factory)
 print "Iphone Chat server started"
reactor.run()

Тогда на Iphone у него есть

- (void) initNetworkCommunication {

CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"localhost", 80, &readStream, &writeStream);

inputStream = (NSInputStream *)readStream;
outputStream = (NSOutputStream *)writeStream;
[inputStream setDelegate:self];
[outputStream setDelegate:self];
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];



[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
[outputStream open];

}

ТеперьУ меня вопрос со стороны Iphone, откуда он знает, что такое localhost?Я мог бы понять из самого компьютера, что он знает, что является localhost, но на устройстве Iphone (НЕ симулятор, который находится в компьютере, поэтому он должен знать localhost). Откуда настоящий Iphone знает 'localhost' ??

Ответы [ 3 ]

1 голос
/ 28 марта 2012

Полагаю, код не предназначен для запуска где-либо еще, кроме симулятора. Там это будет работать, потому что localhost на самом деле является компьютером, на котором работает python-сервер. На реальном устройстве «localhost» (или 127.0.0.1) всегда будет ссылаться на само устройство. Вы должны изменить localhost на ip / hostname python-сервера, чтобы он работал на реальном устройстве.

0 голосов
/ 24 января 2014

если вы запускаете это на симуляторе, то вам нужно написать localhost, что означает адрес обратной связи 127.0.0.1 , но если вы устанавливаете эту программу на устройстве iphone, тогда вместо localhost вы должны указать IP-адрес вашей системы, на которой работает сервер.

0 голосов
/ 28 марта 2012

Попробуйте установить 127.0.0.1 в качестве ip. Это петлевой IP.

Но вы используете iphone в качестве сервера python? Когда вы соединяете сокет с хостом, это удаленный хост. Вы должны поместить адрес и порт сервера в функцию «Сопряжение» вместо localhost.

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