由于开发任务重,开发部分记录缺失。
一、目的与要求
- 掌握基于 Android 的网络编程的相关知识。
- 学会如何定义网络协议。
- 学会如何传输表情、图片等特殊信息。
二、实验内容
- 建立简单的 SOCKET 通信服务端和客户端。服务端 ServerAddress=InetAddress.getByName(“192.168.1.142”);
socket=new Socket(ServerAddress,500);
commsThread=new CommsThread(socket);
public class CommsThread extends Thread {
private final Socket socket;
private final InputStream inputStream;
private final OutputStream outputStream;
public CommsThread(Socket sock) {
socket = sock;
InputStream tmpIn = null;
OutputStream tmpOut = null;
try {
// —创建用于通过套接字读写的输入流和输出流对象—
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
} catch (IOException e) {
Log.d(“SocketChat”, e.getLocalizedMessage());
}
inputStream = tmpIn;
outputStream = tmpOut;
}
public void run() {
// —流的缓冲区存储—
byte[] buffer = new byte[1024];
// —bytes returned from read()—
int bytes;
// —一直监听 InputStream 直到异常发生—
while (true) {
try {
// —从inputStream读取—
bytes = inputStream.read(buffer);
// —更新主活动UI—
SocketsActivity.UIupdater.obtainMessage(0, bytes, -1, buffer).sendToTarget();
} catch (IOException e) {
break;
}
}
}
// —从主活动调用此函数将数据发送到远程设备—
public void write(byte[] bytes) {
try {
outputStream.write(bytes);
} catch (
IOException e) {
}
}
// —从主活动调用此函数以关闭连接—
public void cancel() {
try {
socket.close();
}
catch (IOException e) {
}
}
}注意在 androidManifest 中添加用户权限: <uses-permission android:name=*”android.permission.INTERNET”* />客户端 ServerAddress = InetAddress.getByName(“192.168.1.142”); socket = new Socket(ServerAddress, Serverport);
Socet.connect(SocketAddress remoteAddress);
InputeStream tmpIn = socket.getInputStream();
OutputStream tmpOut = socket.getOutputStream();
while(bRunning) {
tmpIn.read(byte[] buf,int offset,int length);
tmpOut.write(byte[] buffer,offset,int length);
}
登录完成后,进行前面类似的 Presence、Message、IQ 报文进行信息交互;
三、思路
建立一个服务器,服务器暂定用 Node.js 来写。
用到的工具:
Node.js
Android
Json
xml
存疑
看得出来建议使用的是 xml
配合 xmpp 协议
。但我希望使用的是Json
,因为服务端好解析。可以研究 XMPP 协议
的原理,再移植到 Json
上。
四、大致过程
测试
编好布局
写好主界面的功能
编写安卓 TCP 服务
在服务器上建立相对应的 TCP 服务端