java socket oc_OC中的socket通信

-(void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode{

NSLog(@"%u",eventCode);switch(eventCode) {caseNSStreamEventOpenCompleted:

NSLog(@"连接完成");break;caseNSStreamEventHasBytesAvailable:

{NSLog(@"有刻度字节");

uint8_t buffer[10];

NSMutableString*mstr = [NSMutableString string];int len;//= [inputStream read:buffer maxLength:sizeof(buffer)];

do{

len= [inputStream read:buffer maxLength:sizeof(buffer)];

NSString*s =[[NSString alloc] initWithBytes:buffer length:len encoding:NSUTF8StringEncoding];

[mstr appendString:s];

}while (len == sizeof(buffer));

NSLog(@"====%@====",mstr);

}break;caseNSStreamEventHasSpaceAvailable:

NSLog(@"可以写入数据");break;caseNSStreamEventErrorOccurred:

NSLog(@"发生错误");break;caseNSStreamEventEndEncountered:

NSLog(@"流结束");//做善后工作//关闭流的同时,将流从主运行循环中删除

[aStream close];

[aStream removeFromRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];default:break;

}

}

调用connect方法后控制台就会打印出连接完成,可以写入数据,此时就可以写入数据了,下面是写入数据的代码

NSString *str = @"iam:kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk12345";

NSData*data =[str dataUsingEncoding:NSUTF8StringEncoding];

[outputStream write:data.bytes maxLength:data.length];

因为Socket传输的都是二进制流,所以当传输字符串时需要通过NSData转为二进制数据

此外要记得流关闭的时候要从主循环中移除

一般我们开发的时候不会用原生的socket,一般都是用第三方的框架,这样可以提高开发效率,减少开发过程中出现错误

如果使用的是TCP协议一般用AsyncUdpSocket如果使用的是UPD一般使用asyncUdpSockey

http://pan.baidu.com/s/1gdDuGIf

上面的地址中有我的demo和一个python写的服务脚本,,只需要在你的终端里面输入 python+空格+那个py文件就运行起来了.这个文件运行起来以后你的电脑就是一台服务器了,,连接服务器的代码里面host传127.0.0.1   port传12345就可以建立连接了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值