如何在iOS中使用套接字?

问题描述:

我必须实现一个iOS应用程序,它连接到一个Web服务器并从它接收事件,即服务器长轮询。我打算使用AsyncSocket库。如何在iOS中使用套接字?

我的想法是在iPhone上打开一个套接字,在我第一次连接到它时将它发送到服务器,然后无限地监听套接字并根据服务器发送给它的事件更新GUI。这里是我的问题:

  1. 这是一个正确的方法,如果不是 - 应该怎么做?
  2. 服务器可以发送数据到我给它的套接字(只要套接字打开),如果iPhone和服务器在不同的网络上,并且iPhone在本地网络上?

  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