我已经在appDelegate didFinishLaunchingWithOptions方法中创建了一个TCP套接字连接。这是容易的部分,我已经成功地连接到我的服务器。在我的视图中,我很难从服务器读取数据。我一直在学习如何使用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
我已经被困在这几个小时了,所以任何帮助都会非常感谢。
谢谢!
发布于 2012-06-05 18:49:08
这应该是可行的:
- (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");
}编辑:如果内存满足我的需要,那么库中有一些文档和一些示例可用。
https://stackoverflow.com/questions/10902710
复制相似问题