2011-08-26 33 views
0

我为Android编写了一个客户端 - 服务器应用程序,并且我正在为iPhone执行相同的操作。 的事情是,在沟通过程中,与Java服务器和Android客户端,我编程是这样的(伪...):如何使用“iphone套接字”编程通信协议?

data = read(); 
if (data.compareTo("Something1") == 0) then 
    write("Something2"); 
    data = read(); 
    if (data.compareTo("Something3") == 0) then 
      //End communitacion 
    endif 
endif 

现在我的问题是,与“iphone套接字“我不知道该怎么做。我正在使用AsyncScoket库,并且使用该库的读取没有阻塞(这对我来说很复杂),它使用回调函数,我不知道如何正确使用它。

我猜测读取完成后,如果发送的数据等于“Something1”或“Something2”,我应该测试适当的回调......但是,第一个小问题是它没有任何订单。

我应该说我没有时间修改协议。

如果有人能指导我,我会很感激。或者使用AsyncSocket库完成网络通信的任何代码示例。

谢谢!

回答

1

我最近开始使用asyncsocket以及TCP java服务器。也许这个代码可能有帮助?

写信给你需要从asyncsocket对象

-(void)writeData:withTimeout:tag:; 

数据来电来访下面的方法应该是一个NSData对象的插座。您可以轻松地将字符串转换为NSData的做

[someStringObject dataUsingEncoding:NSUTF8Encoding]; 

从插座上只读取调用此方法

-(void)readDataWithTimeOut:tag:; 

通-1超时,如果你并不需要一个超时。

就是这样。使用cocoaasyncsocket进行读/写比处理Java中需要datainputstream和dataoutputstream等的套接字容易得多。

重要的委托方法是该委托的

-(void)onSocket:didReadData:withTag: gets called whenever the socket reads some data. 

例子是..

-(void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{ 

     NSString *string = [[NSString alloc] initWithBytes:[data bytes] 
                length:[data length] 
               encoding:NSUTF8StringEncoding]; 
    //Do what ever comparison you'd like here. 

} 

如果有什么事情,你不明白,然后让我知道,我会尽力和答案你的疑惑。

+0

最后,我用了。抱歉忘记回答。 – newlog