使用OC二进制流进行发送消息

//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;}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • AccessPoint 配置上网 通过app发送wifi账号密码给硬件设备,让硬...
    蛋白质corn阅读 328评论 0 0
  • 一、网络各个协议:TCP/IP、SOCKET、HTTP等 网络七层由下往上分别为物理层、数据链路层、网络层、传输层...
    任梦RM阅读 382评论 0 0
  • 一、网络各个协议:TCP/IP、SOCKET、HTTP等网络七层由下往上分别为物理层、数据链路层、网络层、传输层、...
    北辰青阅读 289评论 0 0
  • Socket编程一、网络各个协议:TCP/IP、SOCKET、HTTP等网络七层由下往上分别为物理层、数据链路层、...
    VincentHK阅读 324评论 0 2
  • 何为 socket ? 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。...
    大王叫我来巡山_Cong阅读 4,997评论 3 14

友情链接更多精彩内容