4 ϵͳʵÏÖ
4.1 ¿Í»§¶ËµÄʵÏÖ
ÔÚÇ°ÃæÎÒÃÇÒѾÏêϸµÄ½éÉÜÁË·þÎñÆ÷µÄʵÏÖ£¬µ«ÊǶÔÓÚÒ»¸öC/SģʽµÄÏîÄ¿À´Ëµ£¬ÎÒÃÇ»¹±ØÐë¶Ô¿Í»§¶Ë½øÐÐÉè¼ÆºÍʵÏÖ£¬ÏÂÃæµÄ¾ÍÊǶԿͻ§¶ËµÄÉè¼Æ¡£
ÔÚ±¾ÏîÄ¿ÀïÃæ¿Í»§¶ËºÍ·þÎñÆ÷¶ËÊÇͨ¹ýsocket½¨Á¢Á¬½ÓͨµÀ½øÐÐÊý¾Ý½»»»µÄ¡£·þÎñÆ÷Óë¿Í»§¶¼Í¨¹ý¹¹ÔìObjectOutputStream¡¢ObjectInputStreamÀ´½¨Á¢ÊäÈëÁ÷ºÍÊä³öÁ÷£¬Ë«·½Í¨¹ý¸ÃÊäÈëÁ÷ºÍÊä³öÁ÷À´Ï໥´«µÝÐÅÏ¢¡£Ö»ÒªÊÕµ½¿Í»§¶ËµÄÁ¬½ÓÇëÇ󣬷þÎñÆ÷ÀûÓÃaccept()º¯Êý·µ»ØÒ»¸öн¨µÄSocket¶ÔÏó£¬Ëæºó¿Í»§¶ËÏò·þÎñÆ÷·¢ËÍÏûÏ¢£¬±ÈÈç×¢²á¡¢µÇ¼ºÍ²éÕÒͬʵÈÇëÇ󣬷þÎñÆ÷ÊÕµ½ÇëÇóºó£¬Õë¶Ô²»Í¬µÄÏûÏ¢´¦ÀíÇëÇó¡£
±¾ÏµÍ³ÊÇ»ùÓÚsocketµÄ¾ÖÓòÍø¼´Ê±Í¨Ñ¶£¬±¾ÏµÍ³µÄ¿Í»§¶ËÊÇÓÃandroidÓïÑÔ±àдµÄÒÆ¶¯¿Í·þ¶Ë£¬Ê¹ÓÃÁËmvcÉè¼ÆÄ£Ðͼ¼Êõ[5]¡£¼´ÏÔʾÓë¿ØÖÆµÄ´úÂëÊÇ·Ö¿ªÐ´µÄ£¬ÕâÑù¼õÉÙÁ˸÷¸öÄ£¿éµÄñîºÏÐÔ£¬Ìá¸ßÁËÕâ¸öÏîÄ¿µÄ¿Éά»¤ÐÔ¡£
4.1.1 µÇ¼ģ¿éµÄʵÏÖ
Ê×ÏÈÎÒÃÇÏÈÀ´ÕûÀíϵǼģ¿éµÄÔËÐеĻúÖÆ£¬ÕýÈçÎÒÃÇËùÖªµÄ£¬ÔÚͨѶÁìÓòÀïÃæµÇ¼ģ¿éÊÇÒ»¸öºÜÖØÒªµÄÄ£¿é¡£ÔÚ¿Í»§¶ËÀïÃæÊäÈëÄãµÄÓû§Õ˺ÅÓëÃÜÂëµÇ¼£¬ÄÇô´Ëʱ·þÎñÆ÷½ÓÊÕµ½Õ˺źÍÃÜÂëºóºÍÊý¾Ý¿âÀïÃæµÄÓû§±íÆ¥Å䣬ÅжÏÊÇ·ñµÇ¼³É¹¦¡£
µÇ½µÄµÄʱºòÏÈÅжÏsocketÊÇ·ñÁ¬½ÓÁË¡£Ö»ÓÐǰ̨Óëºǫ́Á¬½ÓÁ˲Űѵ±Ç°Óû§Ìá½»¸øºǫ́£¬ÅжÏÓû§±íÀïÃæÊÇ·ñ´æÔÚÁËÕâ¸öÓû§£¬ºǫ́Êý¾Ý¿âµÄsqlÓï¾äµÄʵÏÖΪ£ºString sql
= \
ǰ̨Ìá½»Êý¾Ý´úÂëµÄʵÏÖ£º
/**
* Ìá½»Õ˺ÅÃÜÂëÐÅÏ¢µ½·þÎñÆ÷ */
private void login() {
String accounts = mAccounts.getText().toString(); String password = mPassword.getText().toString(); if (accounts.length() == 0 || password.length() == 0) {
DialogFactory.ToastDialog(this, \µÇ¼\Ç×£¡ÕʺŻòÃÜÂë²»ÄÜΪ¿ÕŶ\showRequestDialog(); // ͨ¹ýSocketÑéÖ¤ÐÅÏ¢ if (application.isClientStart()) {
Client client = application.getClient();
ClientOutputThread out = client.getClientOutputThread();
TranObject
13
} else {
}
}
}
u.setId(Integer.parseInt(accounts));
u.setPassword(Encode.getEncode(\o.setObject(u); out.setMsg(o);
if (mDialog.isShowing())
mDialog.dismiss();
\Ç×£¡·þÎñÆ÷ÔÝ먦·ÅŶ\
DialogFactory.ToastDialog(LoginActivity.this, \怬\
} else {
4.1.2 ×¢²áÄ£¿éµÄ¾ßÌåʵÏÖ
×¢²áµÄʱºòÏÈÅжÏsocketÁ¬½ÓÊÇ·ñÀ´´æÔÚ£¬²»´æÔڵϰ֨ÐÂÔÙÁ¬½ÓÒ»´Î¡£Èç¹ûÁ¬½Óºǫ́µÄ»°£¬¾Í°Ñµ±Ç°Óû§×¢²áµÄÓû§ÃûºÍÃÜÂë¼Ç¼µ½ºǫ́¡£ºǫ́Èç¹û×¢²á³É¹¦µÄ»°¾ÍÉú³ÉÒ»¸öÓû§µÄid£¬²¢ÇÒÉú²úÒ»¸öÓû§µÄidµÄºÃÓÑÁÐ±í£¬Óû§Ê¹ÓÃÕâ¸öidµÇ½¡£
ǰ̨´úÂëµÄʵÏÖ£º
private void regist() { //
String email = mEmailEt.getText().toString(); String name = mNameEt.getText().toString(); String passwd = mPasswdEt.getText().toString(); String passwd2 = mPasswdEt2.getText().toString(); if (email.equals(\
|| passwd2.equals(\
\Ç×£¡´ø*ÏîÊDz»ÄÜΪ¿ÕµÄŶ\
DialogFactory.ToastDialog(RegisterActivity.this, \×¢²á\
} else {
if (passwd.equals(passwd2)) {
showRequestDialog(); // Ìá½»×¢²áÐÅÏ¢
if (application.isClientStart()) {// Èç¹ûÒÑÁ¬½ÓÉÏ·þÎñÆ÷
Client client = application.getClient(); Client client = GetMsgService.client;
ClientOutputThread out = client.getClientOutputThread(); TranObject
TranObjectType.REGISTER);
User u = new User(); u.setEmail(email);
14
} /**
* ×¢²á³É¹¦ºó£¬´´½¨Ò»¸öÓû§±í£¬±£´æ¸ÃÓû§ºÃÓÑ *
* @param id */
public void createFriendtable(int id) {
Connection con = DButil.connect(); try {
String sql = \
+ \+ \+ \+ \+ \+ \
}
} else { }
DialogFactory.ToastDialog(RegisterActivity.this, \×¢²á\
\Ç×£¡ÄúÁ½´ÎÊäÈëµÄÃÜÂ벻ͬŶ\
\
}
u.setName(name);
//u.setPassword(Encode.getEncode(%u.setPassword(passwd);//²»¼ÓÃÜ o.setObject(u); out.setMsg(o);
if (mDialog.isShowing())
mDialog.dismiss();
DialogFactory.ToastDialog(this, \×¢²á\\Ç×£¡·þÎñÆ÷ÔÝ먦·ÅŶ
} else {
ºǫ́´úÂëµÄʵÏÖ
PreparedStatement ps = con.prepareStatement(sql); int res = ps.executeUpdate(); System.out.println(res);
} catch (SQLException e) {
15
}
}
e.printStackTrace(); DButil.close(con);
} finally {
4.1.3 ÁÄÌìÐÅÏ¢½çÃæµÄʵÏÖ
ÔÚ±¾ÏîÄ¿ÁÄÌìÐÅÏ¢µÄÀïÃæÐÅÏ¢µÄ½ÓÊպͷ¢ËͶ¼ÊÇͨ¹ýsocketÁ¬½ÓÀ´ÊµÏֵġ£Ê¹ÓÃSocket¶Ô¾ÖÓòÍøÉϱ¾µØµÄ·þÎñÆ÷µÄÒ»¸ö¶Ë¿Ú·¢³öÁ¬½ÓÇëÇó£¬Èç¹ûÁ¬½Ó³É¹¦£¬´ò¿ª±¾´Î»á»°£»»á»°Íê³Éºó£¬¹Ø±ÕÕâ´Î´´½¨µÄSocketÁ¬½Ó¡£×ܵÄÀ´Ëµ¾ÍÊÇ£¬µ±·þÎñ¶Ë¿ªÆôsocket·þÎñ£¬¿Í·þ¶Ëÿ´ÎÁ¬½Ó·þÎñÆ÷³É¹¦µÄ»°·þÎñÆ÷¶Ë»á´´½¨Ò»¸öÏß³ÌÀ´´¦ÀíÕâ¸öÁ¬½Ó£¬Õâ¸öÁ¬½ÓÊÇ´æ·ÅÔÚÏ̳߳ØÀïÃæÍ³Ò»¹ÜÀíµÄ¡£Èç¹ýÕâ¸öÁ¬½Ó½áÊøµÄ»°¾ÍÊÇÊÍ·ÅÕâ¸öÏ̡߳£
(1)ÐÅÏ¢·¢ËÍ
(2)ÿ´ÎÓû§·¢ËÍÏûÏ¢µÄʱºò£¬ÏȰÑÒª·¢Ë͵ÄÏûÏ¢·â×°µ½ÏûÏ¢ÀàÀïÃæ£¬ÔÙ°ÑÒª·¢Ë͵ÄÏûÏ¢·â×°µ½TranObjectÀàÀïÃæ£¬Õâ¸öÀฺÔðÏòºǫ́·¢ËÍ·â×°µÄÊý¾Ý¡£Óз¢Ë͵ÄÊý¾Ý£¬À´×ÔÄĸöÓÃ
»§£¬·¢¸øÄĸöÓû§µÄÐÅÏ¢£¬ÔÙͨ¹ýClientOutputThread ÀàÏò·þÎñÆ÷·¢ËÍÐÅÏ¢¡£Ã¿´Î·¢ËÍÍêÊý¾Ý
Çå¿ÕÊäÈë¿ò¡£¹Ø¼ü´úÂëµÄʵÏÖÈçÏ£º
private void send() {
String contString = mEditTextContent.getText().toString(); if (contString.length() > 0) {
ChatMsgEntity entity = new ChatMsgEntity(); entity.setName(util.getName()); entity.setDate(MyDate.getDateEN()); entity.setMessage(contString); entity.setImg(util.getImg()); entity.setMsgType(false);
messageDB.saveMsg(user.getId(), entity); mDataArrays.add(entity);
mAdapter.notifyDataSetChanged();// ֪ͨListView£¬Êý¾ÝÒÑ·¢Éú¸Ä±ä mEditTextContent.setText(\Çå¿Õ±à¼¿òÊý¾Ý
mListView.setSelection(mListView.getCount() - 1);// ·¢ËÍÒ»ÌõÏûϢʱ£¬ListViewÏÔMyApplication application = (MyApplication) this
.getApplicationContext();
Client client = application.getClient();
ClientOutputThread out = client.getClientOutputThread();
16
ʾѡÔñ×îºóÒ»Ïî