个人andriod实习小作品,个人联网笔记本
来源:互联网 发布:阿里巴巴小二 淘宝天下 编辑:程序博客网 时间:2024/06/11 11:57
个人联网笔记本
个人信息:就读于燕大本科软件工程专业 目前大四;
本人博客:google搜索“cqs_2012”即可;
个人爱好:酷爱数据结构和算法,希望将来从事算法工作为人民作出自己的贡献;
编程语言:java ;
编程坏境:Windows 7 专业版 x64;
编程工具:jdk,eclipse,AVD;
制图工具:office 2010 powerpoint;
硬件信息:7G-3 笔记本;
引言
个人第一部联网andriod作品诞生,andriod生涯里程碑的出现。
主要技术点
通信socket技术,使用多线程通信。
在socket使用中,使用一次打开一次,关闭一次,数据传输一去一回。
socket与应用程序主线程的切换;
对主线程进行枷锁,数据传送完后,在socket线程里对主线程的唤醒,防止主线程没有等待数据通信完毕就开始执行。
对主线程设置锁;
// 线程锁(其实就是定义一个全局变量,在myapplication(全局变量)中定义)
public static String loginThreadState = "off";加锁操作
MyApplication.loginThreadState =“off”;
// 判断当前线程是否唤醒检查锁操作
while(MyApplication.loginThreadState.equals("off"));
开锁以及唤醒操作
// 唤醒 login 进程
MyApplication.loginThreadState = "on";
MyApplication.loginThreadState.notify();然后这样就可以实现通信了,并且可以等待通信返回来的数据,然后去处理。
个人笔记服务器端socket实现
import java.net.*;import java.io.*;import java.text.SimpleDateFormat;import java.util.*;import DBData.DataApplication;import DBData.NoteBookClass;import DBData.User;import DBOperation.NoteDao;import DBOperation.UserDao;import DataChange.NoteChange;public class MyAppNoteBookInfor extends Thread{// 链接变量private static int port;private static ServerSocket serverSocket ;static Socket server;private DataInputStream input;private DataOutputStream output;static{try{// 设置服务器端口port = 8899; serverSocket = new ServerSocket(port);}catch(Exception e){e.printStackTrace();}}public MyAppNoteBookInfor()throws Exception{ // 成功启动System.out.println("accept ready");server = serverSocket.accept(); // 成功启动System.out.println("accept start");// 获取数据流input = new DataInputStream(server.getInputStream());output = new DataOutputStream(server.getOutputStream());}// run 主函数public void run() {try { // 接收数据String commondData = getCommondData();// 处理数据,并发送数据if(commondData != null)selectCommond( commondData );server.close();} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}}// 选择函数 not over 数据处理public void selectCommond(String data)throws Exception{// 接收数据,处理String formatdata[] = data.split( DataApplication.commondGetDataStyle );// 选择操作命令switch( Integer.parseInt(formatdata[0])){// checkcase DataApplication.commond_check_user:{// 数据转换User user = new User();user.setId( formatdata[1] );user.setPwd( formatdata[2] );// 数据处理Boolean result = MyAppNoteBookServer.checkUser(user);// 转换格式String senddata = result.toString();// 发送数据sendData(senddata);} break; // select-allcase DataApplication.commond_get_my_all_note:{// 数据处理String userid = formatdata[1]; ArrayList<NoteBookClass> noteList = MyAppNoteBookServer.getUserNoteList(userid);String senddata = "null" ;if(noteList != null && noteList.size() > 0)// 数据转换senddata = NoteChange.noteListToStringWithSendForSelect(noteList); // 发送数据sendData(senddata);}break;// new - notecase DataApplication.commond_insert_note:{// 数据转换NoteBookClass noteBookClass = NoteChange.stringToNoteBookWithGetForInsert(formatdata[1]);// 数据处理Integer result = MyAppNoteBookServer.insertNote(noteBookClass);// 数据转换String senddata = result.toString();// 数据发送sendData(senddata);}break;// new usercase DataApplication.commond_insert_user:{// 数据转换User user = new User();user.toUser(formatdata[1]);// 数据处理Integer result = MyAppNoteBookServer.insertUser(user);// 数据转换String senddata = result.toString();// 数据发送sendData(senddata);}break;case DataApplication.commond_search_note_by_key:{// 转换数据String[] keystStrings = NoteChange.dataToStringWithGetForSelectByKey(formatdata[1]);String useridString = keystStrings[0];String keywordString =keystStrings[1];// 数据处理ArrayList<NoteBookClass> noteList = MyAppNoteBookServer.getUserNoteListByKeywords(useridString,keywordString);// 数据转换String senddata = "null" ;if(noteList != null && noteList.size() > 0)senddata = NoteChange.noteListToStringWithSendForSelect(noteList); // 发送数据sendData(senddata);}break;case DataApplication.commond_alter_note:{// 转换数据NoteBookClass noteBookClass = NoteChange.stringToNoteBookWithGetForAlter( formatdata[1] );// 数据处理MyAppNoteBookServer.AlterNoteBook(noteBookClass);ArrayList<NoteBookClass> noteList = MyAppNoteBookServer.getUserNoteList(noteBookClass.getUserId());String senddata = "null" ;if(noteList != null && noteList.size() > 0)// 数据转换senddata = NoteChange.noteListToStringWithSendForSelect(noteList); // 发送数据sendData(senddata);}break;case DataApplication.commond_delete_note:{// 获取并转换数据int id = Integer.parseInt(formatdata[1]);// 处理数据int result = MyAppNoteBookServer.DeleteNoteBookById(id);// 转换数据String senddata = String.valueOf(result);// 发送数据sendData(senddata);}break;}}// 发送信息函数public void sendData(String data){try {// 发送消息output.writeUTF(data);output.flush();} catch (Exception e) {e.printStackTrace();}}// 接收命令函数public String getCommondData(){String data = null;try {// 接收消息data = input.readUTF();} catch (Exception e) {// TODO: handle exception}return data;}// 主函数 mainpublic static void main(String args[]) throws Exception{MyAppNoteBookInfor myAppNoteBookInfor; while(true){myAppNoteBookInfor = new MyAppNoteBookInfor();myAppNoteBookInfor.start();}}}
个人客户端socket实现package Thread;import java.io.DataInputStream;import java.io.DataOutputStream;import java.net.Socket;import com.icss.myappnotebook.MyApplication;public class SocektThread extends Thread{// 设置链接服务器private String ip = "120.6.72.65" ;private int port = 8899 ;// 链接客户端程序 变量private Socket clientSocket ;// 设置数据流public DataInputStream input ;public DataOutputStream output ;// 线程主函数public void run(){try{// 链接服务器clientSocket = new Socket(ip,port);// 获取服务器输入流input = new DataInputStream(clientSocket.getInputStream());// 获取服务器输入流output = new DataOutputStream(clientSocket.getOutputStream());switch (MyApplication.commond) {// check-核对用户名和密码case MyApplication.commond_check_user:// 发送数据 2点output.writeUTF(MyApplication.senddata);output.flush();// 发送成功System.out.println("send ok");// 接收数据MyApplication.getdata = input.readUTF();// 唤醒 login 进程MyApplication.loginThreadState = "on";MyApplication.loginThreadState.notify();break;// 获得所有notescase MyApplication.commond_get_my_all_note:// 发送数据 2点output.writeUTF(MyApplication.senddata);output.flush();// 接收数据MyApplication.getdata = input.readUTF();// 唤醒 menu 线程MyApplication.menuThreadState="on";MyApplication.menuThreadState.notify();break;case MyApplication.commond_insert_note:// 发送数据output.writeUTF(MyApplication.senddata);output.flush();// 接收数据MyApplication.getdata = input.readUTF();// 唤醒 new 线程MyApplication.newNoteBookThreadState = "on";MyApplication.newNoteBookThreadState.notify();break;case MyApplication.commond_insert_user:// 发送数据output.writeUTF(MyApplication.senddata);output.flush();// 接收数据MyApplication.getdata = input.readUTF();// 唤醒 register 线程MyApplication.registerUserThreadState = "on";MyApplication.registerUserThreadState.notify();break;case MyApplication.commond_search_note_by_key:// 发送数据output.writeUTF(MyApplication.senddata);output.flush();// 接收数据MyApplication.getdata = input.readUTF();// 唤醒 search 线程MyApplication.searchNoteBookThreadState = "on";MyApplication.searchNoteBookThreadState.notify();break;case MyApplication.commond_alter_note:// 发送数据output.writeUTF(MyApplication.senddata);output.flush();// 接收数据MyApplication.getdata = input.readUTF();// 唤醒 show one notebook 线程MyApplication.showOneNoteThreadState = "on";MyApplication.showOneNoteThreadState.notify();break;case MyApplication.commond_delete_note:// 发送数据output.writeUTF(MyApplication.senddata);output.flush();// 接收数据MyApplication.getdata = input.readUTF();// 唤醒 show one notebook 线程MyApplication.openAllThreadState = "on";MyApplication.openAllThreadState.notify();break;default:break;}clientSocket.close();}catch(Exception e){e.printStackTrace();}}}
希望对于想实现通信的好友有帮助,谢谢大家
- 个人andriod实习小作品,个人联网笔记本
- 个人小作品发布
- 个人小作品,欢迎下载
- 个人作品
- 个人作品
- 个人作品
- 个人笔记本
- 个人作品专辑
- 个人作品总览
- 个人作品展示
- 个人作品链接
- 个人作品展示
- 个人作品展示(二)
- 个人作品展示(三)
- 个人作品截图
- 个人作品-DNF demo
- 个人课外作品
- 个人作品整理
- 路易威登插座
- AT 指令
- ie6下面弹出层无法出现滚动条
- LeetCode 033 Search in Rotated Sorted Array
- 路易威登手袋
- 个人andriod实习小作品,个人联网笔记本
- 当程序启动时,保持屏幕变暗状态
- 硬盘内部硬件结构和工作原理详解
- Linux/CentOS各种服务框架的搭建完整流程
- widget挂件怎么使用
- <Android>子布局比例设置
- git 删除 add 过的文件
- hdu 2141
- ios 如何让一个view居中另一个view