`
zjjzmw1
  • 浏览: 1354606 次
  • 性别: Icon_minigender_1
  • 来自: 开封
社区版块
存档分类
最新评论

socket 聊天的简单实现和思路

    博客分类:
  • iOS
阅读更多

 =====================希望对大家有所帮助,仅此而已================

/*   

 AsyncSocket   聊天用的。。。-------》是可以通过ip给某个设备发送消息,关键是如何找到ip,问题就解决了。------》ip其实是通过登陆来获取的。只要是登陆用户服务器就可以把id号码和ip一一绑定了。

 聊天的原理:例如A发送给B消息。

 1.A先发送给服务器消息包含(Bid号码要发送的内容)。

 2.如果B不在线,服务器利用推送通知推送给B一个消息。当B登陆后会传给服务器自己的idip(外网内网都有)

 服务器就可以把之前A发来的消息再发给B了。并注明是A发的。

 3.B就收到了A的消息。

 

 其实整个过程是 socket和推送共同完成的。。。主要工作在后台。,,,手机端功能并不复杂。

 

 

 */

 

#define kScreenHeight [[UIScreen mainScreen] bounds].size.height

#define kScreenWidth [[UIScreen mainScreen] bounds].size.width

 

#import "FirstViewController.h"

 

@interfaceFirstViewController ()

 

@end

 

@implementation FirstViewController

 

- (void)viewDidLoad {

    [superviewDidLoad];

    self.title = @"聊天页面";

    self.navigationController.navigationBarHidden = YES;

    self.view.backgroundColor = [UIColorlightGrayColor];

    self.myTextField = [[UITextFieldalloc]initWithFrame:CGRectMake(0, 50, kScreenWidth - 60, 40)];

    self.myTextField.backgroundColor = [UIColorwhiteColor];

    [self.viewaddSubview:self.myTextField];

    

    self.myTextView = [[UITextViewalloc]initWithFrame:CGRectMake(self.myTextField.frame.origin.x, self.myTextField.frame.origin.y + 60,kScreenWidth, kScreenHeight - 100)];

    [self.viewaddSubview:self.myTextView];

    

    self.myButton = [UIButtonbuttonWithType:UIButtonTypeCustom];

    self.myButton.frame = CGRectMake(self.myTextField.frame.size.width, 50, 50, 40);

    [self.myButtonsetTitle:@"发送"forState:UIControlStateNormal];

    [self.myButtonaddTarget:selfaction:@selector(goAction) forControlEvents:UIControlEventTouchUpInside];

    [self.viewaddSubview:self.myButton];

    

    

    ///1.创建发送套接字

    sendUdpSocket = [[AsyncUdpSocketalloc]initWithDelegate:self];

    reservedUdpSocket = [[AsyncUdpSocketalloc]initWithDelegate:self];

    [reservedUdpSocketbindToPort:0x1234error:nil];

    [reservedUdpSocketreceiveWithTimeout:-1tag:200];//200表示

    

    ///2.绑定端口(可选的)

    

    ///发送消息。通过按钮的事件。

    

}

 

-(void)goAction{

    NSString *ip = @"192.168.7.101";

    NSString *context = self.myTextField.text;

    UInt16 port = 0x1234;   //// > 1024   < 2`16-1

    NSData *sendData = [context dataUsingEncoding:NSUTF8StringEncoding];

    [sendUdpSocketsendData:sendData toHost:ip port:port withTimeout:-1tag:100];

    

}

 

-(void)onUdpSocket:(AsyncUdpSocket *)sock didSendDataWithTag:(long)tag{

    if (tag == 100) {

        ///证明tag==100的标记发送完成了

        NSLog(@"证明tag==100的标记发送完成了"); 

    }

}

 

-(BOOL)onUdpSocket:(AsyncUdpSocket *)sock didReceiveData:(NSData *)data withTag:(long)tag fromHost:(NSString *)host port:(UInt16)port{

    NSLog(@"tag====%ld",tag);

    

    [reservedUdpSocketreceiveWithTimeout:-1tag:200];//200表示

    

    NSString *tempS = [[NSStringalloc]initWithData:data encoding:NSUTF8StringEncoding];

    NSString *resultS = [NSStringstringWithFormat:@"\n%@%@%@\n",@"接收到: ",tempS,self.myTextView.text];

    self.myTextView.text = resultS;

    

    

    returnYES;

}

 

 

 

 

 

 

 

 

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

    [self.myTextFieldresignFirstResponder];

    [self.myTextViewresignFirstResponder];

    

}

 

 

-(void)viewWillAppear:(BOOL)animated{

    [superviewWillAppear:animated];

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

@end

1
0
分享到:
评论

相关推荐

    基于socket聊天程序编写实验报告

    2. 熟悉socket聊天系统的结构和工作原理; 3. 掌握TCP传递消息的机制; 4. 应用delphi对该聊天系统进行程序的编写。 二、 实验描述: 通过delphi编程实现局域网内的一个聊天系统,支持客户与服务器、客户与客户之间...

    简单qq聊天(Java socket实现)

    可以实现简单的类似qq聊天的项目,所有的消息都是通过服务器的转发来实现的,可以实现群聊,私聊,状态的改变(包括在线、隐身、离线)

    基于socket的聊天系统设计

    一个聊天系统的通信模块就是Socket程序的设计与实现,聊天系统分为服务器端和客户端,服务器端的任务就是接受客户端的不同请求,做出不同的响应,并处理多客户端之间的通信。 3.1头文件 /***********************...

    基于局域网聊天程序设计其中网络通信部分采用流行的TCP/IP协议。程序采用典型的C/S(服务器/客户端)构架。用socket编程设计网络通讯

    本论文讨论了Windows环境下局域网聊天程序的设计思路和设计方法。其中网络通信部分采用流行的TCP/IP协议。程序采用典型的C/S(服务器/客户端)构架。用socket编程设计网络通讯。界面设计部分采用Windows MFC框架。...

    vue + socket.io实现一个简易聊天室示例代码

    设计和实现思路较为拙劣,恳请各位道友指正。 可以达到的需求 能查看在线用户列表 能发送和接受消息 使用到的框架和库 socket.io做为实时通讯基础 vuex/vue:客户端Ui层使用 Element-ui:客户端Ui组件 类文件...

    node.js + socket.io 实现点对点随机匹配聊天

    其实我也想经常发来的,奈何技术不够加上懒,要向大神们多多学习了,前段时间有用bomb平台自带的socket写一个聊天室,其实基本就是改了改它的demo,这次想实现一个随机私聊,所以自己基于node 和 socket.io 来搭服务...

    JAVA基于局域网的聊天室系统(源代码+论文).zip

    该系统采用JAVA语言编写,基于SOCKET编程实现,具有简单易用、安全可靠、稳定性好等特点。用户可通过该系统发送文本消息、表情、图片等内容,并且支持离线消息的存储和查看。 该系统还具备用户管理、权限控制、聊天...

    TCP聊天室 VC版 含实验报告

    系统能实现简单的聊天室功能包括一对多,而且同时也支持一对一,即私聊功能。在系统运行中,用户可以随时更改自己的用户名。功能虽然单一但也能够满足聊天的基本功能。 二、 通信规范的制作 程序中定义了一个结构体...

    java版的类似飞秋的局域网在线聊天项目

    聊天采用的Socket套接字加多线程的方式进行,每个客户端都开启一个Socket和ServerSocket,这样就可以做到相互发送 3. 文件发送也实现了,原理跟发送文本消息差不多,最大的特点是实现了文件夹的发送,这个比较...

    cilent-sever.rar

    1. 分别编写基于TCP或UDP的socket程序服务端和客户端,实现客户端和服务端间的简单信息交换功能,即服务端和客户端能依次从键盘输入文字信息并发送。 2. 服务端实现消息转发功能,设计通信协议,使得任意一个客户端...

    基于TCP的聊天室(包含客户端与服务器端)

    该聊天室是基于TCP。程序分为两个部分,客户端和服务器端,利用Socket(套接字)编程,实现了多个客户端之间的简单通信。该程序是学习网络编程的最佳选择,它能帮助你迅速的掌握网络编程的思路。

    C#制作简单的多人在线即时交流聊天室

    这个聊天室其实是我上周周末完成的,功能简单,可能有些不足,但可以满足在线即时聊天需求,分享也是给大家提供一个思路,大家可以基于此来实现更好的在线即时聊天工具。 聊天室功能简介: 1。支持多人进入同一个...

    Python 基础 之 python 线程知识点整理,并实现一个简单多线程 udp 聊天应用

    三、实现思路 四、效果预览 五、实现步骤 六、关键代码 一、简单介绍 Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新...

    java源码包---java 源码 大量 实例

    一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码...

    java源码包2

    一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源...

    java源码包3

    一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源...

    java源码包4

    一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 ...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 ...

    JAVA上百实例源码以及开源项目源代码

    简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 ...

Global site tag (gtag.js) - Google Analytics