5

同様の質問に対する他の回答からいくつかの提案されたリンクを読みました。Article1Library1別の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ポートをリッスンするには、いくつかの設定が必要です。

良い選択は、RobbieHansonのCocoaAsyncSocketを使用することです。

そこにEchoServerの例があります(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

于 2012-06-09T18:42:36.717 に答える