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结尾的,否则~~唉,只可惜自己学艺不精!继续努力。
然后通过这个方法,就能实时给服务端发信息了。