Socket基本概念与原理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.I M基本概念与原理

QQ 微信陌陌

即时通讯

IM :instant messager

通过消息通道传输消息对象,一个账号发往另一个账号,只要账号在线,即时获得消息。

消息通道:由TCP/IP UDP 实现的通道

1.1. TCP/IP UDP

TCP/IP UDP:传输信息的时候,封装上的

1.2. 三次握手

1.3. 常见形式

1.4. IM原理

注意事项:消息通道不能断开

1)登录账号密码,提交,经服务端确定

2)成功以服务端发回好友信息

3)消息必须包含from:来源to:去向content:内容time:时间

4)由服务器转发给目标账号

1.5. 注意点

2.核心概念

2.1. 消息内容_IM服务端接口文档

IM服务接口文档:疑问当的形式规定通讯消息的字段与格式(xml/json)

消息对象:消息内容+附加字段的封装

2.2. 消息内容_Xstream自动生成juit

XStream

2.3. 项目应用:继承基类

Serializable{

x.alias(this.getClass().getSimpleName(), this.getClass());

// ②调用toXml 或者fromXml

return x.toXML(this);

}

public Object fromXml(String xml) {

XStream x = new XStream();

x.alias(this.getClass().getSimpleName(), this.getClass());

// ②调用toXml 或者fromXml

return x.fromXML(xml);

}

public String toJson() {

Gson gson = new Gson();

return gson.toJson(this);

}

public Object fromJson(String json) {

Gson gson = new Gson();

return gson.fromJson(json, this.getClass());

}

}

2.4. 消息通道-连接对象

2.5. 消息发送

2.6. 消息接收

2.6.1.监听器

// ①申明接口

publicstaticinterface OnQQMessageReceiveListener { // ②抽象方法

// ③定义参数

publicvoid onReceive(QQMessage msg);

}

private Listlisteners = new ArrayList();

// ④添加方法移除

publicvoid

addOnQQMessageReceiveListener(OnQQMessageReceiveListener listener) {

listeners.add(listener);

}

publicvoid

removeOnQQMessageReceiveListener(OnQQMessageReceiveListener listener) {

listeners.remove(listener);

}

privateboolean flag = true;

// ⑤参数产生的地方调用

@Override

publicvoid run() {

super.run();

while (flag) {

try {

String xml = reader.readUTF();

QQMessage msg = new QQMessage();

msg = (QQMessage) msg.fromXml(xml);

if (msg != null) {

for (OnQQMessageReceiveListener listener : listeners) {

listener.onReceive(msg);

}

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

3.项目功能-Socket

3.1. 模块:启动页面

在xml文件中配置界面没有标题头:

setContentView(yout.activity_splash);

// ①布局 ImageView

// ②等待3000

ThreadUtils.runInThread(new Runnable() { @Override

publicvoid run() {

try {

//检查更新

//初始

Thread.sleep(3000);

startActivity(new

Intent(getBaseContext(),LoginActivity.class));

finish();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

});

3.2. 模块:登录

butterknife.jar的使用:

相关文档
最新文档