//ios这里实现socket的链接,使C语言
//1.与服务器通过三次握手实现链接
NSString *host = @"127.0.0.1";
int port = 54321;
CFReadStreamRef readStream; CFWriteStreamRef writeStream;
//3.分配输入输出流的内存空间CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)host,port,&readStream, &writeStream);
//4.把C语言的输入输出流转成OC对象
_inputStream = (__bridge NSInputStream *)(readStream);
_outputStream = (__bridge NSOutputStream *)(writeStream);
//5.设置代理,监听数据接收的状态
_outputStream.delegate = self;
_inputStream.delegate = self;
[_outputStream scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
[_inputStream scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
//6打开输入输出流
[_inputStream open];
[_outputStream open];
#pragma mark--- NSStreamDelegate
-(void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode{
switch (eventCode) {
case NSStreamEventOpenCompleted:
NSLog(@"成功建立链接,形成输入输出流的传输通道");
break;
case NSStreamEventHasBytesAvailable:
NSLog(@"有数据可读");
[self readData];
break;case NSStreamEventHasSpaceAvailable:NSLog(@"可以发送数据");break;case NSStreamEventEndEncountered:NSLog(@"正常的断开链接");//断开连接时,把输入输出流关闭,而且还要从主运行循环中移除[_inputStream close];[_outputStream close];[_inputStream removeFromRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];[_outputStream removeFromRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];break;default:break;}
使用OC二进制流进行发送消息
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 何为 socket ? 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。...