2010-11-22 85 views
2

我必須實現一個iOS應用程序,它連接到一個Web服務器並從它接收事件,即服務器長輪詢。我打算使用AsyncSocket庫。如何在iOS中使用套接字?

我的想法是在iPhone上打開一個套接字,在我第一次連接到它時將它發送到服務器,然後無限地監聽套接字並根據服務器發送給它的事件更新GUI。這裏是我的問題:

  1. 這是一個正確的方法,如果不是 - 應該怎麼做?
  2. 服務器可以發送數據到我給它的套接字(只要套接字打開),如果iPhone和服務器在不同的網絡上,並且iPhone在本地網絡上?

回答

1
  1. 是的。是的。

在Fone公司,您將獲得在抵達的Fone公司大概是這樣的信息:

-(void)onSocket:(AsyncSocket *)sock didReadData:(NSData*)data withTag:(long)tag 
    { 
    [data getBytes:&getMe length:sizeof(CommProt)]; 
    // do not forget to roll in the next read... 
    [sock readDataToLength:sizeof(CommProt) withTimeout:-1 tag:0]; 
    // now parse that command 
    } 

,並在Fone公司,你會從Fone公司發送的信息很可能是這樣的(有幾個不同的方法)...

-(void) mySendStringData:(NSString *)sss 
    { 
    // so easy, thank goodness for AysncSocket 
    NSData* data = [sss dataUsingEncoding: NSASCIIStringEncoding]; 

    [theSocket writeData:data withTimeout:0.5 tag:0]; 
    [theSocket writeData:quickCR withTimeout:0.5 tag:0]; 
    // (in the protocol at hand, we are using a delimiter on the end (a CR)) 
    } 

。有可能這個職位,我做可幫助你:它提供了有關協議的內幕在iOS設備上:

Tablet(iPad/Android)-Server Communication Protocol

我希望它能幫助。

可以想象這將有助於iPad and Arduino Integration這個祕密的知識可以幫助Client/Server GKSessions乾杯

+0

巨大的感謝! :)我會試一試:),如果我被卡住了,我會再問一次,如果我可以:) – cpprulez 2010-11-23 08:19:53