我从类似问题的其他答案中读到了一些建议的链接。 Article1,Library1,Another 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开发人员,我需要一个基本的。
答案 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
。