»ùÓÚsocketµÄ¼´Ê±Í¨Ñ¶µÄÑо¿±ÏÒµÉè¼Æ

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 o = new TranObject(TranObjectType.LOGIN); User u = new User();

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 o = new 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

ʾѡÔñ×îºóÒ»Ïî

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)