AsyncSocket 对我不起作用

Posted

技术标签:

【中文标题】AsyncSocket 对我不起作用【英文标题】:AsyncSocket doesn't work for me 【发布时间】:2012-10-13 17:48:05 【问题描述】:

首先我会说我确实到处寻找和搜索,然后再问这里 我正在尝试为 iphone 编写一个简单的应用程序,只需通过 telnet 连接到 IP 和端口, 我尝试了所有我对 obj-c 不熟悉的东西(在 java 中我花了四分钟), 我不想使用线程,但我听说 asyncsoket 非常好.. 我不知道为什么,但是当我尝试时:

AsyncSocket * socket = [[AsyncSocket alloc] initwithDelegate:self];
[socket connectToHost:@"localhost" onPort:444 error:&err]

(这是一个可以工作的服务器) 它根本没有连接......

我只需要连接到套接字写入和读取数据... 是否有任何简单的代码示例(无线程、无运行循环)可以用作基础?

【问题讨论】:

你实现了任何委托方法吗? 不...我没有...你知道我怎么能从 main 运行这个吗? 主要是什么意思?您正在创建命令行应用程序吗?如果是这样,您将不得不使用 nsrunloop。 【参考方案1】:

ConnectDelegate.h

#import <Cocoa/Cocoa.h>
#import "AsyncSocket.h"

@class AsyncSocket;
@interface ConnectDelegate: NSObject 
    AsyncSocket *connectSocket;

- (void)connect;

@end

ConnectDelegate.m

#import "ConnectDelegate.h"
#import "AsyncSocket.h"

@implementation ConnectDelegate

- (id) init;

    if( ![super init] )
    return nil;
    return self;


- (void)connect

    connectSocket  = [[AsyncSocket alloc] initWithDelegate:self];
    connectSocket.delegate = self;

    NSError *error = nil;
    if (![connectSocket connectToHost:@"192.168.1.103" onPort:4000 error:&error]) 
        NSLog(@"Error starting client: %@", error);
        return;
    


- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port
    NSLog(@"connected to server");

- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
    // some relevant code goes here

- (void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag

@end

main.m

int main(int const argc, char * const argv[] ) 
    ConnectDelegate *SocketConnection = [[ConnectDelegate alloc] init];
    [SocketConnection connect];

    // Run runloop
    [[NSRunLoop currentRunLoop] run];

return 0

【讨论】:

以上是关于AsyncSocket 对我不起作用的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Class.forName() 对我不起作用?

为啥 '@drop' 事件在 vue 中对我不起作用?

为啥交换功能对我不起作用? [复制]

为啥 BlockInput 对我不起作用?我忘了啥吗?

为啥灯箱 jQuery 插件对我不起作用?

为啥发布到 PayPal 沙盒 API 对我不起作用?