Iphone听tcp端口

时间:2012-06-09 18:02:20

标签: ios tcp port

我从类似问题的其他答案中读到了一些建议的链接。 Article1Library1Another SO Question。但是,我无法弄清楚如何进行以下应用程序。

基本上,我发送给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 method。)

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

1 个答案:

答案 0 :(得分: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];

直到您在\n中检测到str