IM即时通信

IM(instant Message)即时通信:比较有名的有QQ、微信、陌陌等。

1.常用的协议有TCP/UDP(底层),HTTP(上层)

2.TCP与UDP的异同

TCP与UDP的异同
异同点TCP UDP
大小可以大文件64k一下
连接方式面向连接(三次握手)不面向连接
效率效率低效率高 
   
   

3.常见形式

在线直传

不经过服务器,peer to peer  p2p

在线代理

消息经过服务器,由服务器转发

离线代理

消息经过服务器,对方不在线,暂保服务器,在线再转发

离线扩展

其它形式转发 sms邮件


4.IM的原理

步骤

1.创建与服务器端的消息通道

2.登录账号与密码

3.获得所有联系人(好友)

4.服务器根据目标账号to发送消息。








5.侧重点

开发的重点

1.IM接口文档  2.开发sdk

Socket  套接字

客户端程序  插头

ServerSocket

服务端程序  插座

电流/消息通讯

 


核心内容

1.消息内容与IM服务器接口文档

接口文档:规定了消息内容的字段和格式(xml和json)
消息对象:封装的消息对象,消息内容+附加字段

2.消息格式(xml/json)

Xml与json都是格式良好的字符串。



xmljson
Xstreamgson
完成java对象与xml的互转完成java对象与json的互转
Xstream
1.fromXml :xml转java对象
2.toXml :java对象转xml



gson
1.fromGson:json转java对象
2.toJson :java对象转json


xml扩展性好json扩展性差
<name>消息</name>流量没优势{"name":“消息”}流量有优势
  































































  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
.支持联系人状态(在线、离开、离线、忙碌、电话、会议…) .支持会话 .支持邀请多人会话 .支持表情图标 .支持字体与颜色 .支持截图发送 .支持点对点文件发送(Internet上平均传输文件为60KB/秒) .支持点对点文件断点续传 .支持语音交流 .支持视频交流 .查找好友 .显示商务好友信息 .支持消息广播 .留言消息提醒,对方不在线情况下可以留言,对方上线时得到留言提醒 .自定义群组 .自定义个人档案信息 .支持多人语音视频会议 .支持服务器Linux\Win2000\2003\2008 历史信息管理 通讯记录,查看历史聊天记录和文件发送接收记录 短信中心 1)一对一手机短信发送(中国移动、中国联通手机) 2)手机短信群发(中国移动、中国联通手机) Web客户端 内嵌Web网页浏览 语言版本 1)支持简体中文操作界面,包括客户端和服务端 2)支持英文操作界面,包括客户端和服务端 应用领域: 1. 高稳定性,高负载大用户量在线即时通信环境。 2. 面向高端商务,商贸,音乐娱乐各行业门户网站。 3. P2P 互动游戏数据交换. 4. 已有会员整合,"一站式" 服务应用领域。 5. 远程教学,医疗咨询,企业文件传输与管理,视频监控,网络电话等应用。 6. 和企业已有软件项目结合(ERP\CRM\SCM) 已经使用的企业: 上海XXX多媒体技术有限公司、上海XX传媒广告有限、上海XXX网络科技有限公司、青岛XXX软件科技有限公司、外X网、上海XXX服饰有限公司、 广州X打折网 、广州X下载网、北京X房产网、北京X龙旅游信息技术有限公司、北京X网络有限公司... 通讯协议: 1)底层通讯基于TCP/IP协议。 2)文件传输基于UDP协议。Internet中传输文件速度与QQ相当,内网传输文件最快,比QQ快点。 3)客户端之间消息交换基于P2P技术(点对点) 4)应用网络地址转换(NAT)技术,局域网和Internet之间自由通讯. 5)穿透防火墙技术. [找出目标进程] [找出SOCKET句柄] [用DuplicateHandle()函数将其SOCKET转换为能被自己使用] [用转换后的SOCKET进行数据传输] 6)支持邮件接受和发送协议(PoP3/STMP)提供邮件接口,可以在系统内集成邮件系统 开发环境 1)纯VC++、c、Delphi、C#编写 2)支持SQL Server 2000/2005/2008、Oracle9i/10i/MySql数据库 3)服务器系统支持Linux\BSD\Unix\Windows2000\2003\2008 服务器并发说明: 服务端主要用于用户基本信息、在线状态、组织结构的信息保存。 不参与客户之间的信息交换(类似BT),服务器可以为分布式集群,如果数据库为SQL SERVER 2000以上版本可以使用故障转移(负载均衡)大大增强服务端的并发和负载,服务端用户登录数并发为1秒300。 服务器负载说明: 注册用户数量设计上是没有限制的,单服务器情况下允许同时在线用户100000以上。
以下是示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include "openssl/hmac.h" #define APPID 140000000 #define SECRETKEY "your_secret_key" #define EXPIRETIME 86400 char* get_user_sig(int sdk_appid, const char* secret_key, const char* identifier, int expire_time) { char* user_sig = NULL; char* content = NULL; unsigned char hmac[32]; unsigned int hmac_len = ; char expire_str[16]; char sdk_appid_str[16]; char* raw_content = NULL; sprintf(expire_str, "%d", expire_time); sprintf(sdk_appid_str, "%d", sdk_appid); raw_content = (char*)malloc(strlen(identifier) + strlen(expire_str) + 1); sprintf(raw_content, "%s%d", identifier, expire_time); content = (char*)malloc(strlen(raw_content) + strlen(sdk_appid_str) + 1); sprintf(content, "%s%s", sdk_appid_str, raw_content); HMAC(EVP_sha256(), secret_key, strlen(secret_key), (unsigned char*)content, strlen(content), hmac, &hmac_len); user_sig = (char*)malloc(hmac_len * 2 + 1); for (int i = ; i < hmac_len; i++) { sprintf(user_sig + i * 2, "%02x", hmac[i]); } user_sig[hmac_len * 2] = '\'; free(raw_content); free(content); return user_sig; } int main() { int sdk_appid = APPID; const char* secret_key = SECRETKEY; const char* identifier = "test_user"; int expire_time = EXPIRETIME; char* user_sig = get_user_sig(sdk_appid, secret_key, identifier, expire_time); printf("userSig: %s\n", user_sig); // TODO: 使用 userSig 进行腾讯IM即时通信 free(user_sig); return ; } ``` 注意:示例代码中的 `APPID` 和 `SECRETKEY` 需要替换为你自己的腾讯云账号的应用 ID 和密钥。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值