5

我从其他类似问题的答案中阅读了一些建议的链接。文章 1图书馆 1另一个 SO 问题。但是,我无法弄清楚如何执行以下应用程序。

基本上,我向 Iphone 的 IP 和选定的端口(比如说端口:2020)发送一个字符串。我想在 Iphone 的 UI 上显示这个字符串。因此,让我们检查以下示例代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    NSString* str;
    while(true)
    {
         str = ReadLineFromPort(2020);
         myLabel.text = str;
    }
}

我希望该ReadLineFromPort()方法具有以下职责:

阅读直到你看到换行符(即'\n'),当你看到换行符时返回字符串。(类似于C# StreamReader.Readline 方法。)

任何帮助将不胜感激。由于我不是专业的 IOS 开发人员,因此我需要一个基本的开发人员。

4

1 回答 1

6

侦听某些 TCP 端口确实需要进行一些设置。

一个不错的选择是使用 Robbie Hanson 的CocoaAsyncSocket

在那里你会找到一个 Echo Server 的例子(在 RunLoop/XCode/EchoServer.

没错,这个 XCode 项目是为 OSX 生成的,但您可以简单地创建一个空的 iOS 项目并复制粘贴大部分代码。

虽然没有“读取直到中断”功能 - 但在将数据复制到接收缓冲区时实现它很简单。

编辑:

您通常想要修改onSocket: didReadData: withTag:

- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
{
    NSData *strData = [data subdataWithRange:NSMakeRange(0, [data length])];
    NSString *str = [[NSString alloc] initWithData:strData encoding:NSUTF8StringEncoding];
    if(str)
    {
      myLabel.text = str;   
    }
}

现在,此代码未检测\n到传入数据。例如,您可以定义一个 ivar 或属性rx_buffer

NSMutableString *rx_buffer;

这将

rx_buffer = [rx_buffer stringByAppendingString: str];

直到你检测\nstr.

于 2012-06-09T18:42:36.717 回答