ios socket怎么向指定的socket发送消息
5个回答
2016-03-04 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
可以在io.sockets.on('connection', function (socket) {});中,保存这个socket对象,当要发送消息给这个客户端时,找到这个socket实例,即可以直接 socket.emit() 来发送消息了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、确认已经安装最新版本的iTunes
2、将iPhone连接至iTunes
3、通过Mac或PC上的iTunes对iPhone进行备份。iCloud备份无法恢复到早先版本,包括iOS 8.0。
4、下载相应固件。
5、在Mac上按住Option键,并点击“查看更新”;或在Windows上按住Shift键,并点击“查看更新”。
6、点击“更新”即可。
2、将iPhone连接至iTunes
3、通过Mac或PC上的iTunes对iPhone进行备份。iCloud备份无法恢复到早先版本,包括iOS 8.0。
4、下载相应固件。
5、在Mac上按住Option键,并点击“查看更新”;或在Windows上按住Shift键,并点击“查看更新”。
6、点击“更新”即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
socket要向指定的服务发送数据,首先要有这个服务的IP地址,其次端口号,然后在写入数据发送就可以。这里有个小demo,是iOS客户端的,你可以参考参考。
http://blog.csdn.net/mobilecode/article/details/8755553
http://blog.csdn.net/mobilecode/article/details/8755553
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@property (nonatomic, strong)AsyncSocket *serverSocket;
@property (nonatomic, strong)AsyncSocket *clientSocket;
@property (nonatomic, strong)AsyncSocket *myNewSocket;
@property (nonatomic, copy)NSString *fileName;
@property (nonatomic, strong)NSMutableData *allData;
@property (nonatomic)int fileLength;
@property (nonatomic, copy)NSString *host;
- (void)viewDidLoad
{
[super viewDidLoad];
self.serverSocket = [[AsyncSocket alloc]initWithDelegate:self];
[self.serverSocket acceptOnPort:8000 error:nil];
}
-(void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket{
self.myNewSocket = newSocket;
}
-(void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port{
self.host = host;
[self.myNewSocket readDataWithTimeout:-1 tag:0];
}
-(void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{
NSData *headerData = [data subdataWithRange:NSMakeRange(0, 100)];
NSString *headerString = [[NSString alloc]initWithData:headerData encoding:NSUTF8StringEncoding];
if (headerString && [headerString componentsSeparatedByString:@"&&"].count==3) {
NSArray *headers = [headerString componentsSeparatedByString:@"&&"];
NSString *type = headers[0];
if ([type isEqualToString:@"file"]) {//接收到的是文件
self.fileName = headers[1];
self.fileLength = [headers[2] intValue];
//准备一个可变data 用来保存接收到的每一部分文件数据
self.allData = [NSMutableData data];
//得到第一部分抛去头的文件数据
NSData *subData = [data subdataWithRange:NSMakeRange(100, data.length-100)];
[self.allData appendData:subData];
self.historyTV.text = [self.historyTV.text stringByAppendingFormat:@"\n正在接收%@发送的%@文件",self.host,self.fileName];
}else if ([type isEqualToString:@"message"]){//接收到的是文本
NSData *messageData = [data subdataWithRange:NSMakeRange(100, data.length-100)];
NSString *message = [[NSString alloc]initWithData:messageData encoding:NSUTF8StringEncoding];
//把对方说的话显示出来
self.historyTV.text = [self.historyTV.text stringByAppendingFormat:@"\n%@说:%@",self.host,message];
}
}else{//没有头的情况
[self.allData appendData:data];
}
//判断是否接收完成
if (self.allData.length == self.fileLength) {
NSString *newPath = [@"/Users/tarena/Desktop" stringByAppendingPathComponent:self.fileName];
[self.allData writeToFile:newPath atomically:YES];
}
//继续接收数据
[self.myNewSocket readDataWithTimeout:-1 tag:0];
}
@property (nonatomic, strong)AsyncSocket *clientSocket;
@property (nonatomic, strong)AsyncSocket *myNewSocket;
@property (nonatomic, copy)NSString *fileName;
@property (nonatomic, strong)NSMutableData *allData;
@property (nonatomic)int fileLength;
@property (nonatomic, copy)NSString *host;
- (void)viewDidLoad
{
[super viewDidLoad];
self.serverSocket = [[AsyncSocket alloc]initWithDelegate:self];
[self.serverSocket acceptOnPort:8000 error:nil];
}
-(void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket{
self.myNewSocket = newSocket;
}
-(void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port{
self.host = host;
[self.myNewSocket readDataWithTimeout:-1 tag:0];
}
-(void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{
NSData *headerData = [data subdataWithRange:NSMakeRange(0, 100)];
NSString *headerString = [[NSString alloc]initWithData:headerData encoding:NSUTF8StringEncoding];
if (headerString && [headerString componentsSeparatedByString:@"&&"].count==3) {
NSArray *headers = [headerString componentsSeparatedByString:@"&&"];
NSString *type = headers[0];
if ([type isEqualToString:@"file"]) {//接收到的是文件
self.fileName = headers[1];
self.fileLength = [headers[2] intValue];
//准备一个可变data 用来保存接收到的每一部分文件数据
self.allData = [NSMutableData data];
//得到第一部分抛去头的文件数据
NSData *subData = [data subdataWithRange:NSMakeRange(100, data.length-100)];
[self.allData appendData:subData];
self.historyTV.text = [self.historyTV.text stringByAppendingFormat:@"\n正在接收%@发送的%@文件",self.host,self.fileName];
}else if ([type isEqualToString:@"message"]){//接收到的是文本
NSData *messageData = [data subdataWithRange:NSMakeRange(100, data.length-100)];
NSString *message = [[NSString alloc]initWithData:messageData encoding:NSUTF8StringEncoding];
//把对方说的话显示出来
self.historyTV.text = [self.historyTV.text stringByAppendingFormat:@"\n%@说:%@",self.host,message];
}
}else{//没有头的情况
[self.allData appendData:data];
}
//判断是否接收完成
if (self.allData.length == self.fileLength) {
NSString *newPath = [@"/Users/tarena/Desktop" stringByAppendingPathComponent:self.fileName];
[self.allData writeToFile:newPath atomically:YES];
}
//继续接收数据
[self.myNewSocket readDataWithTimeout:-1 tag:0];
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询