2010-06-03 68 views
0

我有一個ipod touch程序,應該可以從我的mac上的服務器程序接收消息。爲了確保觸摸可以接收來自Mac以外的計算機的消息,我使用C++對服務器進行了編程。如果我在同一臺計算機上運行服務器和ipod應用程序(在模擬器上運行的應用程序),連接就沒有問題,並且一切都很花哨。但是,當我嘗試從我的設備連接到服務器時,連接超時。任何人都可以發現問題嗎?一般來說,我不太擅長網絡和iPhone OS。嘗試將ipod touch連接到我的服務器時,網絡超時

server.cpp:

sockfd = socket(PF_INET, SOCK_STREAM, 0); 
if (sockfd < 0) { 
    cout << "ERROR opening socket"; 
    return; 
} 

memset((char *)&serv_addr, 0, sizeof(serv_addr)); 
serv_addr.sin_family = AF_INET; 
serv_addr.sin_addr.s_addr = INADDR_ANY; 
serv_addr.sin_port = htons(portno); 

if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) { 
    cout << "ERROR on binding"; 
    return; 
} 

listen(sockfd,5); 
clilen = sizeof(cli_addr); 

newsockfd = accept(sockfd,(struct sockaddr *) &cli_addr, (socklen_t*)&clilen); 
if (newsockfd < 0) { 
    cout << "ERROR on accept."; 
    return; 
} 

服務器卡在接受(),等待應用程序...

client.m:

CFReadStreamRef readStream = NULL; 
CFWriteStreamRef writeStream = NULL; 
CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (CFStringRef)hostName, portNum, &readStream, &writeStream); 

if (readStream && writeStream) { 
    NSLog(@"Starting streams"); 

    CFReadStreamSetProperty(readStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue); 
    CFWriteStreamSetProperty(writeStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue); 

    inputStream = (NSInputStream *)readStream; 
    [inputStream retain]; 
    [inputStream setDelegate:self]; 
    [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 
    [inputStream open]; 

    outputStream = (NSOutputStream *)writeStream; 
    [outputStream retain]; 
    [outputStream setDelegate:self]; 
    [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 
    [outputStream open]; 
} 
if (readStream) 
    CFRelease(readStream); 

if (writeStream) 
    CFRelease(writeStream); 

至於我可以告訴,除了超時外,服務器和客戶端都不會報告任何錯誤(我正在通過errno和NSError進行檢查)。

如果有人能幫助我,非常感謝!

回答

0

iPod連接到與我的Mac不同的網絡,這就是爲什麼它被阻止。當我連接到同一個網絡時,它工作得很好。

相關問題