CocoaAsyncSocket--mac Or iOS下封装好的Socket编程库(三)

第三篇也终于有时间写了。

这一篇文字不会多,而且也算是非常简单。这次我用的是ConnectTest这个客户端代码。

之前玩了下CocoaAsyncSocket提供的样例代码,刚开始看到有两个可以互相输入内容的服务端和客户端程序,本来一开始就是奔着这两个程序去展开写的,但是没留意到那两个竟然UDP的连接~~~顿时无语,所以这里就用了ConnectTest。

 

运行第二篇的服务端,界面就是这样,然后输入开放的端口号8002。

然后在客户端使用以下代码进行与服务端通信

NSString *host = @"localhost";
        uint16_t port = 8002;
        
        
        DDLogInfo(@"Connecting to \"%@\" on port %hu...", host, port);
        
        NSError *error = nil;
        if (![asyncSocket connectToHost:host onPort:port error:&error])
        {
            DDLogError(@"Error connecting: %@", error);
        }

因为我连的是本机,所以就在host那里填了localhost。

然后就是处理一堆delegate methods了,我也不详述了。

 

如果客户端仅仅如此,以后看回来,估计也被自己写的东西搞得一头雾水,所以,我自己硬着头皮去修改了这个程序~结果改后的界面如下:

每个输入框和按钮的用处,从名字就很明显看得出来了。

然后看关键的发送信息的方法:

- (IBAction)sendTextAction:(id)sender {
    if ([self.content_textfield stringValue].length) {
        NSString *text_to_send = [NSString stringWithFormat:@"%@\r\n",[self.content_textfield stringValue]];
        NSData *data_to_send = [text_to_send dataUsingEncoding:NSUTF8StringEncoding];
        [asyncSocket writeData:data_to_send withTimeout:-1 tag:0];
    }
}

本来从做界面到连接服务端,一切都很顺利,但是在发送信息这里,却堵住了我的去路,搞了一阵子,才发现,socket传输的内容是必须由\r\n结尾的,否则~~唉,只可惜自己学艺不精!继续努力。

然后通过这个方法,就能实时给服务端发信息了。

posted @ 2013-08-13 16:22  卓毅  阅读(882)  评论(0编辑  收藏  举报