浅谈IM软件怎样建立安全socket 登录连接,登录

525被浏览13,857分享邀请回答9327 条评论分享收藏感谢收起1添加评论分享收藏感谢收起当前位置: &>&&>& >
socket(掌握环信的前提,也是即时通讯的底层的实现)
1.Soet简介
Soet 又称为"套接字",,它与网络相关,学网络必学的一个知识
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的每一端都称为一个socket
应用程序通过"套接字"向网络发出请求或者答应网络请求
通信连接的方式
2.网络通信的要素
网络上的请求就是通过Socket 来建立连接然后互相通信
IP地址(网络上主机设备的一标识)
端号口(定位程序)
&1&用于标示进程的逻辑地址,不同进程的表示
&2&有效端口:0-65535,其中0-1024由系统使用或者保留端口,开发中建议只用1024以上端口
传输协议 (用什么样的方式进行交互)
&1&通讯的规则
&2&常见的协议:TCP,UDP
(1)TCP (传输控制协议)
1.建立连接,形成传输数据的通道
2.在连接中进行大数据传输(数据不受限制)
3.通过3次握手完成连接:目的是可靠协议,安全送达
4.必须建立连接效率会稍低
(2)UDP (用户数据报协议)&不需要3次连接&
1.将数据及源和目的封装成数据包中,不需要建立连接
2.每个数据报的大小限制在64k之内
3.因为无需连接,因此是不可靠协议
4.不需要建立连接,速度快
3.Socket通信流程图
Socket通信流程图
HTTP 底层是通过socket建立连接通信管道,实现数据传输
HTTP 是一个TCP的传输协议(方式),它是一个可靠,安全的协议
4.实现Socket服务端监听
实现socket 的监听方法 &1&使用C语言实现 &2&使用CocoaAsyncSocket (OC) 第三方框架,内部都是对C的封装
Telnet命令 : telnet host port/telnet 192.168.10.10 5228
Telnet命令是连接服务器上的某个端口对应的服务
&3&讲解一下Socket服务端对客户端请求的处理(以10086为形式来模拟)
下面是oc命令行来写的1.在gitHub下载 CocoaAsyncSocket2.取出来里面的source-&GCD
取出TCP协议
3.我们需要建立一个Socket对象
Socket对象
4.终端输入来连接服务端,然后敲Enter 来输入一些想要发送给服务器的内容,在JKServeLestening.m进行返回输入的内容,实现自问自答
telnet 192.168.80.102 5228
5.重要的是掌握服务器端接受数据和返回数据的处理
在终端输入 telnet 192.168.80.102 5228 后有个选择,3是退出服务器连接
6.具体的代码都在JKServeLestening类里面自己下载
5.群聊服务器端
多个客户连接到服务器
当一个客户端发送消息时,服务器转发给其他已经连接的客户端
相当于一个群聊的意思
群聊服务端
我们可以打开多个终端,来进行群聊操作在返回给用户信息时判断一下就好了
这里有两个比较重要的属性(端口号非常重要)
端口号:当一个手机有多个QQ的时候,为了区分外面的手机给他的两个QQ发送时,用端口号来区分的到底应该发给哪个QQ
//服务器IP地址
@property (atomic, readonly, nullable) NSString *connectedH
@property (atomic, readonly) uint16_t
connectedP
服务器端的具体的代码
服务器这边读取数据
-(void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
1.把 NSData 转化我 string
NSString *string = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
//把当前客户端的数据转发给其他客户端
NSLog(@"接收到客户端的数据 = %@",string);
for (GCDAsyncSocket *socket in self.clientSocketS) {
if (socket != sock) {
[socket writeData:data withTimeout:-1 tag:0];
2.处理请求,返回数据给客户端
#warning 每次读取完数据后,都要调用一次监听数据的方法
[sock readDataWithTimeout:-1 tag:0]; //(客户端有请求就调用下面的方法)
6.群聊客户端(和上面的服务器是保持一致的)
客户端也需要GCDAsyncSocket对象,挂代理GCDAsyncSocketDelegate
里面与服务器连接成功需要监听,读取完数据还需要监听 (否则可能只有一次数据)[sock readDataWithTimeout:-1 tag:0];
//1.连接到聊天服务器
//1.1创建一个客户端的socket对象
GCDAsyncSocket *clientSocket = [[GCDAsyncSocket alloc]initWithDelegate:self delegateQueue:ditch_get_global_queue(0, 0)];
self.clientSocket = clientS
//1.2发送链接请求
NSError *error =
[clientSocket connectToHost:@"192.168.80.102" onPort:5228 error:&error];
-(void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
NSString *string = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",string);
//读完数据也要监听
[sock readDataWithTimeout:-1 tag:0];
与服务器连接成功
-(void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(uint16_t)port
NSLog(@"与服务器连接成功");
//监听读取数据(只有如此才会读取下面方法中的数据)
[sock readDataWithTimeout:-1 tag:0];
与服务器断开连接
-(void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)err
NSLog(@"断开连接= %@",err);
7.上面5和6的汇总
一个客户端和一个服务器端,你需要把客户端里面的IP改为自己电脑的IP地址,端口 大于1024就好,自己随便设,但是服务器端和客户端要保持一致
下面是代码:在此只是模拟 群聊服务器端群聊和客户端群聊代码
8.长连接和短连接
长连接和短连接其实就是一个连接的保存状态,区别就是连接保存的时间
讲解一下:Socket层上的协议(Http协议与XMPP协议都是定义数据传输格式)
&1&Socket是层上的协议,指的是数据传输的格式
&2&Http协议其实是它就是定义在网络上传输的数据格式,双方互相约束,也是数据传输的格式
XMPP协议,是一款即时通讯协议
&1&可扩展消息处理现场的协议,是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线探测,这个协议可能最终允许因特网用户向因特网其他任何人发送即时消息
具体的分析一下下面的协议
以写一封信为标准:
TCP/UDP (传输方式
-&EMS/申通/圆通HTTP/XMPP(数据传输格式) -&&新的内容格式 (中文或,英文)
9.简述即时通讯
即时通讯,又称实时通讯
即时通讯(Instant MessageIng,简称IM) 是一个实时通信系统,允许两人或者多人使用网络实时的传递文字消息,文件,语音与视频交流
即时通讯在开发中使用的场景 &1&开发一个类似于微信,QQ,易信的聊天软件 &2&在电商APP集成买家和卖家的实时沟通等等
当前时下,实现即时通讯的方案 &1& XMPP(开源的即时通讯) &2& 环信
XMPP协议是一个即时通讯的协议,在网络上传输的数据格式是XML,它是通过TCP/IP连接到服务器.
综述:环信是在XMPP上的的二次开发
延伸阅读:
(责任编辑:美朵)
每日重点推荐
夏医生是自己多年老同事的儿子,国外学成归来做事业,老同事担心儿子诊所刚开,门厅罗雀伤了自尊,便偷偷塞钱给李梅,求她装病去“捧场”。
一周热点文章
在线阅读专题电话在经过数百年的发展之后,已从最早的简单接听和拨打设备,成为集录音留言、自动应答、个人信息管理和拨号上网等诸多功能于一身的智能电话终端。智能电话终端使人们能够更加高效、及时地处理周边的各种信息,满足不断发展的信息化要求。  IM(Instant Messaging)软件即即时消息传递软件,它是目前网络上比较流行的杀手级应用程序(Killer Applation),如腾讯的QQ、Microt的MSN、AOL的AIM和ICQ等。无论在什么地方,使用何种设备(如PC、手机、PDA和Web TV等),只要接入Internet,就能够同其他用户进行实时的消息和文件传递,甚至进行语音和视频交流。通过拨号接入Internet,就能在智能电话终端的原型机上实现基本的网络功能,如浏览器、电子邮件等。如果能在智能电话终端上实现IM的客户端软件,用户通过电话就可以进行实时交谈,进而进一步完善了其网络功能,从而增强了该产品在市场上的竞争力。1& IM软件的设计方案1.1 硬件平台  智能电话终端的原型机运行在基于ARM920T内核处理器S3C2410的嵌入式开发板上,该开发板由于性能优异、性价比高,因此适合于开发各类高端的手持、小型终端以及各种网络应用产品。它的标准工作为203M,核心板上的FlashROM和SDRAM均为64MB,并支持的,附带USB键盘和,可运行嵌入式Linux操作系统。为了降低整个系统的成本,设计过程中将该开发板改造成具有32MB的FlashROM和32MB的SDRAM的产品,并为其配置了支持16阶灰度的320*240液晶显示器。1.2 IM软件的功能设计  近年来较为流行的即时消息传递软件很多,它们所提供的功能大同小异。这些客户端软件的根本区别在于客户机和服务器之间的通信过程分别基于不同的即时消息传递协议。通常,每一种即时消息传递软件都具有账号管理、联系人管理、即时消息收发等基本功能,在此基础上又有各自不同的特色功能,如语音聊天、视频聊天和表情管理等。  在众多的即时消息传递软件中,MSN是最受欢迎的软件之一,其通用性和齐全的功能特性得到了用户的广泛肯定。在许多平台上都有由第三方开发的MSN客户端软件,人们对其协议内容早已作了深入的研究和详细的分析,这对开发人员具有极大的参考价值,能够使开发大大缩短。本文介绍实现MSN客户端的一些基本功能的方法,包括用户登录、联系人管理和即时消息收发和显示等。1.3 MSN协议及其模型  MSN协议是采用C/S模型的应用层协议,其命令采用字符形式。客户端应用程序必须以协议规定的顺序在规定的时间内向服务器发送请求,接收应答信息,通过这种机制实现服务器与客户端的通信。由于客户端软件并非始终与单一服务器进行交互,MSN协议要求其客户端在不同的阶段与不同的服务器建立连接,传输相应的账号或数据信息,因此首先必须了解MSN服务器的类型和作用。  MSN服务器分为通知服务器(Notification Server,NS)和接线服务器(SwitchBoard Server,SBS)两种。前者负责用户的登录及身份验证工作,包括联系人列表的增加、删除、修改和状态等信息都通过NS传输;后者则用于提供即时通信服务,即用户聊天消息的收发和文件的传输等都是由SBS实现的。MSN的通信模型如图1所示,客户端在登录时首先与NS建立连接,将用户账号和密码信息加密后发送给NS,再由NS进行身份验证。若验证通过,则NS把用户登录到SBS的Cookie令牌以及该用户的联系人列表和相应的状态信息发送到客户端,由客户端软件进行显示。当用户开始同联系人进行聊天会话时,客户端同SBS建立连接,将从NS得到的Cookie令牌交给SBS,SBS验证Cookie令牌的有效性,验证通过后,客户端就可以发送和接收即时消息及文件。最后在用户退出会话后,关闭同SBS的连接,此时只存在与NS的连接。图中的虚线表示NS和SBS的通信过程。由于对客户端来说这个过程是透明的,因此可以认为它是一个黑盒子而不必关注。1.4 IM软件的系统结构  本系统主要由显示界面、登录模块、联系人管理和即时消息收发四个部分组成。  (1)显示界面  界面设计可以分为登录界面及主界面两个部分。登录界面提供用户账号和密码的输入。主界面由一个菜单栏和三个窗口构成。在用户状态菜单中,用户可以选择联机、离开、忙碌等六种状态;联系人菜单实现了对联系人的增加、删除、修改等工作。三个窗口分别为联系人列表窗口、消息发送窗口和会话窗口。联系人列表窗口列出所有联系人的昵称及其状态信息;消息发送窗口用于输入需要发送的内容;会话窗口中按顺序依次显示用户所发送的消息和对方的应答消息。  (2)登录模块  与NS服务器建立连接,传输加密的用户账号和密码信息,接收NS返回的应答信息,并从应答信息中抽取出SBS服务器的地址和用于登录到该服务器上的Cookie令牌。  (3)联系人管理  提供对联系人的增加、删除和修改等功能。在MSN中为了便于管理,联系人可以分成不同的队列,如好友、家庭成员和商务伙伴等。在新增加联系人时,应提示用户选择要加入的队列,而对于曾经添加过后又删除的联系人则直接将其恢复到原先所在的队列。联系人的删除又分为阻止联系人和彻底删除两种情况。阻止联系人就是将其放入阻止队列,使该联系人无法看到用户的状态并且不能给用户发送即时消息;而彻底删除联系人,则会删除与该联系人有关的所有信息。  (4)即时消息的收发模块&&&&&&& 负责发送和接收即时消息的工作。当用户想同一个联系人发起会话时,首先同SBS服务器创建连接,将Cookie令牌交给它进行验证。验证通过后就可以调用Socket接口向SBS服务器发送信息,而从服务器收到的消息则在会话窗口中显示。2& IM软件的实现步骤及关键技术2.1 开发平台的选择  Linux操作系统因其开放源码、容易定制和扩展、多硬件平台支持和内置网络功能等优良特性,早已成为嵌入式应用开发的首选平台,因此本文使用定制的嵌入式Linux系统[1]。  另外本文选择了Qt-Embeded开发工具,它是由著名的Qt库开发商Trolch针对嵌入式Linux系统推出的构建GUI和应用的C++开发包。Qt-Embeded的移植性较好,支持ARM、PowerPC、MIPS和Dragonball等多种CPU体系结构。同时又有QMake、QVFB、Qt Designer等众多强大开发支撑工具的支持,大大提高了Qt-Embeded系统的开发效率。Qt设计器(Qt Designer)是用来设计和实现用户界面并能够在多平台下运行的一种开发支撑工具,用以简化用户界面的设计。QVFB即虚拟帧缓冲技术,是用于在PC机上运行和测试嵌入式应用程序的工具。
&&&&&往下看有更多相关资料
本网站试开通微、小企业商家广告业务;维修点推荐项目。收费实惠有效果!欢迎在QQ或邮箱联系!
试试再找找您想看的资料
资料搜索:
查看相关资料 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
copyright & &广电电器(中国梧州) -all right reserved& 若您有什么意见或建议请mail: & &
地址: 电话:(86)774-2826670& & &&)他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 websocket 登录验证 的文章

 

随机推荐