Android 课设(记录不完整)

由于开发任务重,开发部分记录缺失。


一、目的与要求

  1. 掌握基于 Android 的网络编程的相关知识。
  2. 学会如何定义网络协议。
  3. 学会如何传输表情、图片等特殊信息。

二、实验内容

  1. 建立简单的 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 来写。

用到的工具:

  1. Node.js
  2. Android
  3. Json
  4. xml 存疑

看得出来建议使用的是 xml 配合 xmpp 协议。但我希望使用的是Json,因为服务端好解析。可以研究 XMPP 协议 的原理,再移植到 Json 上。

四、大致过程

测试

编好布局

写好主界面的功能

编写安卓 TCP 服务

在服务器上建立相对应的 TCP 服务端