我在appDelegate didFinishLaunchingWithOptions
方法中创建了一个 TCP Socket连接。这很简单,我已成功连接到我的服务器。我在View中从服务器读取数据时遇到了很大困难。我一直在浏览如何使用 CocoaAsyncSocket 来适当地(逐步)读取数据的教程,但我还没有遇到任何有用的东西。
这是我appDelegate的代码:
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
socket = [[AsyncSocket alloc] initWithDelegate:self];
[self connect];
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.viewController = [[[tekMatrixViewController alloc] initWithNibName:@"tekMatrixViewController" bundle:nil] autorelease];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
这是我的连接方法,位于appDelegate文件的底部:
- (void)connect
{
[socket connectToHost:@"9.5.3.3" onPort:11005 error:nil];
}
这很容易。我现在需要从服务器读取数据。我知道需要创建某种 NSData 或 NSMutableData 对象来获取从服务器读取的数据的值。我刚刚找到任何指导我正确方向的教程或文档是非常失败的。有几个不同的读取函数,一些具有不同的参数,等等。如果有人能指出我的资源深入这个*(我是一个新手,毕竟= P)*我真的很感激 - 或者如果有人知道一个简单的方法来实现这个目标,并不介意在这里提供示例代码:D
这是我使用的图书馆:CocoaAsyncSocket。我使用了库AsyncSocket.h
和AsyncSocket.m
我已经被困在这几个小时了,所以任何帮助都会非常感激。
谢谢!
答案 0 :(得分:4)
这应该有效:
- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
{
NSData *strData = [data subdataWithRange:NSMakeRange(0, [data length])];
NSString *msg = [[NSString alloc] initWithData:strData encoding:NSUTF8StringEncoding];
if(msg)
{
NSLog(@"RX:%@",msg);
}
}
您还应该实现一些其他委托方法,例如:
- (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err
{
NSLog(@"error - disconnecting");
//you'd probably want to start reconnecting procedure here...
}
- (void)onSocketDidDisconnect:(AsyncSocket *)sock
{
NSLog(@"disconnected");
}
- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port
{
NSLog(@"connected");
}
编辑:如果内存对我有用,那么有一些文档以及库中的一些示例。