2012-03-28 3 views
0

http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-serverStellen Sie eine Socket-Verbindung Iphone mit Server Beispiel von Ray Wunderlich

Von der Python Server-Seite

 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() 

Dann auf dem Iphone er hat

- (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]; 

}

Jetzt Die Frage, die ich habe, ist von der Iphone-Seite, wie weiß es, was localh ist Ost ist? Ich könnte von dem Computer selbst verstehen, weiß es, was localhost ist, aber auf einem Iphone-Gerät (NICHT der Simulator, der in dem Computer ist, so sollte es localhost wissen). Wie weiß ein iPhone "localhost"?

+0

Laufen Sie einen Python-Server innerhalb des Iphone ??? Wie??? –

+0

Ich würde nicht erwarten, dass dieser Code auf einem echten Gerät funktioniert, es sei denn, "localhost" wird durch einen Hostnamen/ip des Servers ersetzt, auf dem das Python-Skript läuft. –

+0

Python-Server ist der Computer. Iphone ist das Gerät, das versucht, sich mit ihm zu verbinden. Wenn er die App im Simulator ausführt, sind sowohl der Server als auch das Gerät identisch. – lilzz

Antwort

1

Ich denke, dass dieser Code nicht anderswo als im Simulator ausgeführt werden soll. Dort wird es funktionieren, weil 'localhost' tatsächlich der Computer ist, auf dem der Python-Server läuft. Auf einem echten Gerät bezieht sich 'localhost' (oder 127.0.0.1) immer auf das Gerät selbst. Sie müssen localhost in den IP/Hostnamen des Python-Servers ändern, damit es auf einem echten Gerät funktioniert.

0

Versuchen Sie 127.0.0.1 als IP zu platzieren. Dies ist die Loopback-IP.

Aber Sie verwenden das iPhone als Python-Server? Wenn Sie Ihren Socket mit einem Host verbinden, handelt es sich um den Remote-Host. Sie sollten die Serveradresse und den Port in die Paarungsfunktion anstelle von localhost einfügen.

0

wenn u dieses auf Simulator laufen, dann müssen u die localhost schreiben, die die Loopback-Adresse bedeutet, die 127.0.0.1 ist aber id u dieses Programm auf dem iPhone-Gerät installieren dann anstelle von localhost Sie haben die IP-Adresse geben, Ihres Systems, auf dem der Server ausgeführt wird.

+0

Bitte schreibe ganze Wörter, also kein 'u' usw. – lpapp