IOS实例 实现基于Socket TCP/IP通讯

IOS实例 实现基于Socket TCP/IP通讯是本文要介绍的内容,之前写过基于http的网络传输层的通讯,现在项目需要实现tcp/ip的通讯协议,通过网络查找了一下,已经有人写好了公开的类库AsyncSocket,下面介绍一下AsyncSocket的使用方法。可以参考AsyncSocket的官方文档。

使用方法如下:

1、创建工程。

2、把AsyncSocket添加到项目中。

3、添加CFNetwork.framework到工程中。

4、实现测试类:

#import <UIKit/UIKit.h>   #import "AsyncSocket.h"   @interface iphone_socketViewController : UIViewController {        AsyncSocket *asyncSocket;   }    @end

相应的方法实现:

#import "iphone_socketViewController.h"   @implementation iphone_socketViewController   - (void)viewDidLoad {       [super viewDidLoad];       asyncSocket = [[AsyncSocket alloc] initWithDelegate:self];       NSError *err = nil;      if(![asyncSocket connectToHost:@"192.168.0.113" onPort:25001 error:&err])       {           NSLog(@"Error: %@", err);       }   }   - (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port   {       NSLog(@"onSocket:%p didConnectToHost:%@ port:%hu", sock, host, port);       [sock readDataWithTimeout:1 tag:0];   }   -(void) onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag   {       NSString* aStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];       NSLog(@"===%@",aStr);       [aStr release];       NSData* aData= [@"<xml>我喜欢你<xml>" dataUsingEncoding: NSUTF8StringEncoding];       [sock writeData:aData withTimeout:-1 tag:1];       [sock readDataWithTimeout:1 tag:0];   }   - (void)onSocket:(AsyncSocket *)sock didSecure:(BOOL)flag   {           NSLog(@"onSocket:%p didSecure:YES", sock);   }   - (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err   {       NSLog(@"onSocket:%p willDisconnectWithError:%@", sock, err);   }   - (void)onSocketDidDisconnect:(AsyncSocket *)sock   {       //断开连接了       NSLog(@"onSocketDidDisconnect:%p", sock);   }   - (void)didReceiveMemoryWarning {       [super didReceiveMemoryWarning];   }   - (void)viewDidUnload {       asyncSocket=nil;   }   - (void)dealloc {       [asyncSocket release];       [super dealloc];   }   @end

这里只实现了简单的客户端,关于服务器的实现,是采用pathy写的。在源代码中有。

编译运行结果:

服务器端:

bogon:iosworkspace vsp$ ./Servers.py

客户端的IP是: (’192.168.0.169′, 54851)

<xml>我喜欢你<xml>

后来发的数据

客户端:

2010-12-27 19:14:47.723 iphone.socket[3186:307] WB:Notice: WinterBoard   2010-12-27 19:14:48.892 iphone.socket[3186:307] onSocket:0x16bd00 didConnectToHost:192.168.0.113 port:25001   2010-12-27 19:14:48.897 iphone.socket[3186:307] ===我是服务器端的数据   2010-12-27 19:14:48.911 iphone.socket[3186:307] ===我不喜欢你   2010-12-27 19:14:48.918 iphone.socket[3186:307] onSocket:0x16bd00 willDisconnectWithError:(null)   2010-12-27 19:14:48.928 iphone.socket[3186:307] onSocketDidDisconnect:0x16bd00

源代码:http://easymorse-iphone.googlecode.com/svn/trunk/iphone.socket/

小结:IOS实例 实现基于Socket TCP/IP通讯的内容介绍完了,希望本文对你有所帮助。


转载于:https://my.oschina.net/bankofchina/blog/270942

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值