标签: cocoaasyncsocket

iOS 的 GCDAsyncSocket 未写出缓冲区

基本上我写了一个 NSData 对象:

[asyncSocket writeData:JSONRequestData withTimeout:-1 tag:1];
Run Code Online (Sandbox Code Playgroud)

当运行时,调用委托

- (void)socket:(GCDAsyncSocket *)sock didWriteDataWithTag:(long)tag
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,当写入到缓冲区时......它没有写出到服务器。

当我停止构建时,我猜套接字决定写入所有内容,并且服务器最终会看到它。

我该如何解决这个问题?没有办法刷新 CocoaAsyncSocket,因为它没有必要...我尝试添加行结尾,例如“/n”等,但这也没有任何作用。

sockets ios cocoaasyncsocket gcdasyncsocket

2
推荐指数
1
解决办法
2338
查看次数

从CocoaAsyncSocket开始

我一直在寻找通过TCP将文件(在iphone上录制的小声音)发送到服务器以及从服务器发送到其他设备的方法.似乎最简单的方法是使用CocoaAsyncSocket项目.(这是真的吗?)

然而,虽然我可以找到很多关于如何使用它的例子,但我找不到关于如何安装它的单一解释.

我对iOS和Xcode比较陌生,而且相当丢失.有人可以向我解释如何获得图书馆吗?(我知道如何在我的项目中添加库,但是我只通过gitHub找到了.m文件的下载)

谢谢

xcode tcp ios cocoaasyncsocket

1
推荐指数
1
解决办法
6387
查看次数

为什么不调用库(委托)方法?CocoaAsyncSocket

我已经坚持这个问题几天了,似乎越来越接近一个决议(在伟大的用户@ SO的帮助下).我正在使用CocoaAsyncSocket库来创建到Windows服务器的TCP套接字连接.

我的appDelegate正在建立连接:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    socket = [[AsyncSocket alloc] initWithDelegate:self];
    NSError *error = nil;
    if (![socket connectToHost:@"199.5.83.63" onPort:11005 error:&error]) 
    {
        NSLog(@"Error connecting: %@", error);
    }

    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;
}
Run Code Online (Sandbox Code Playgroud)

我有一个名为onSocket的连接方法(库的一部分):( AsyncSocket*)sock didConnectToHost:(NSString*)主机端口:(UInt16)端口:

- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port
{
    NSLog(@"connected :D");
}
Run Code Online (Sandbox Code Playgroud)

正在调用此方法,因为我可以看到NSLOG的输出并且我已成功连接.我还可以从Windows机器上看到连接成功(使用日志文件).

我还测试了另一个委托方法也被调用:

- (void)onSocket:(AsyncSocket *)sock …
Run Code Online (Sandbox Code Playgroud)

iphone delegates objective-c ios cocoaasyncsocket

1
推荐指数
1
解决办法
812
查看次数

编程流时遇到问题

所以这就是问题:流不是在正确的时间写入,而是无法从我的服务器获得响应.我知道我正在编写正确的数据,因为当我停止构建时,它会写入服务器并且服务器很高兴.我很困惑为什么这不是在正确的时间发生的.

我正在使用GCDAsyncSocket来读/写套接字

我已经创建了一个单独的类来处理所有网络,这是我的代码:

-(id)init{
    self = [super init];
    if (self) {
        asyncSocket = [[GCDAsyncSocket alloc] initWithDelegate:self         delegateQueue:dispatch_get_main_queue()];

        NSError *error = nil;
        if (![asyncSocket connectToHost:@"localhost" onPort:8888 error:&error]) //     Asynchronous!
        {
            // If there was an error, it's likely something like "already connected" or     "no delegate set"
            NSLog(@"I goofed: %@", error);
        }
    }
    return self;
}
//GCD Async Delegate Methods
- (void)socket:(GCDAsyncSocket *)sender didConnectToHost:(NSString *)host port:(UInt16)port
{
    NSLog(@"socket:%p didConnectToHost:%@ port:%hu", sender, host, port);
    NSLog(@"Cool, I'm connected! That was easy.");
}
 - (void)socket:(GCDAsyncSocket …
Run Code Online (Sandbox Code Playgroud)

sockets ios cocoaasyncsocket

1
推荐指数
1
解决办法
1860
查看次数