网络编程socket(服务端简单模拟)(OC)
来源:互联网 发布:php面向对象 实战项目 编辑:程序博客网 时间:2024/05/17 23:18
现在直播这么火,了解socket,甚至对于开发对应的直播软件都是非常重要的;所以,在这里,记录一下一个服务端的简单模拟代码:
int main(int argc, const char * argv[]) { @autoreleasepool { LZP_socket * socket = [[ppp alloc] init]; [socket start]; [[NSRunLoop mainRunLoop] run]; //如果不开启主循环,开启服务器后会立马关闭; } return 0;}
说明:服务器端是一直保持运行状态,如果不开启主循环,服务器对象刚创建就会die;
#import "LZP_socket.h"#import "GCDAsyncSocket.h"@interface LZP_socket()<GCDAsyncSocketDelegate>@property(strong, nonatomic) GCDAsyncSocket * socket;@property(strong, nonatomic)NSMutableArray * clientArray;@end@implementation LZP_socket-(NSMutableArray *)clientArray{ if (_clientArray == nil) { _clientArray = [NSMutableArray array]; } return _clientArray;}-(void)start{//该方法是用来开启socket服务端;//创建一个socket对象/如果该对象不进行全局属性保存,作用域就是该方法内部,无法持续性开启... self.socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_global_queue(0, 0)]; NSError * error = nil; [self.socket acceptOnPort:5333 error:&error]; if (error != nil) { NSLog(@"链接失败"); }else{ NSLog(@"服务已经开启"); }}//该方法是socket代理方法,用来监听接受的客户端;-(void)socket:(GCDAsyncSocket *)serverSocket didAcceptNewSocket:(GCDAsyncSocket *)clientsock{ //监听到的客户端,如果不采取措施保存,也会在方法结尾处die,所以使用一个数组,将各个链接服务端的客户端保存起来; [self.clientArray addObject:clientsock]; NSLog(@"%lu",(unsigned long)self.clientArray.count); //监听客户端输入 [clientsock readDataWithTimeout:-1 tag:0];}//该刚发是用来监听客户端的输入;-(void)socket:(GCDAsyncSocket *)clientsock didReadData:(NSData *)data withTag:(long)tag{ NSString * dataStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"%@",dataStr); [clientsock readDataWithTimeout:-1 tag:0]; for (GCDAsyncSocket * sock in self.clientArray) { if (clientsock != sock) {//除了自己外的其他客户端接收自己发的信息 //将信息发送给其他的客户端sock; [sock writeData:data withTimeout:-1 tag:0]; } }}@end
0 0
- 网络编程socket(服务端简单模拟)(OC)
- java网络编程一:Socket用法,简单模拟一对一聊天
- java网络编程一:Socket用法,简单模拟一对一聊天
- java网络编程一:Socket用法,简单模拟一对一聊天
- java网络编程一:Socket用法,简单模拟一对一聊天
- 网络编程--udp--客户端--服务端--Socket
- Socket编程简单实现服务端客户端连接
- Socket编程服务端原理简单介绍
- linux网络编程之用socket实现简单客户端和服务端的通信(基于TCP)
- linux网络编程之用socket实现简单客户端和服务端的通信(基于UDP)
- SOCKET网络编程(简单介绍)
- Java网络编程上之Socket服务端编程
- iOS开发——网络编程OC篇&Socket编程
- iOS开发——网络编程OC篇&Socket编程
- iOS开发——网络编程OC篇&Socket编程
- iOS开发——网络编程OC篇&Socket编程
- Java网络编程(29):服务端Socket的选项
- java网络编程--socket服务端客户端(1:1)
- caffe|Fine-tuning for driver
- 浅谈Android实现3D旋转
- docker 入门
- JavaScript中的call()和apply()方法
- 238. Product of Array Except Self
- 网络编程socket(服务端简单模拟)(OC)
- [疯狂Java]面向对象:继承、覆盖、super
- C语言基础 求余运算
- Android项目之仿360手机助手项目
- Qt之QImageReader
- Spark定制班第26课:Spark Streaming的JobGenerator源码图解
- Java:按值传递还是按引用传递详细解说
- Android系统自带样式(@android:style/)
- mean开发之四:服务器的启动