A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 老衲玩IT 中级黑马   /  2013-8-25 15:32  /  919 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/**
* 面向非连接的聊天程序
* @author 老衲玩IT
*
*/
public class ChatSocket{
        private static final String HOST ="localhost";//"www.huajunadroid.iego.cn"; //"www.huajunadroid.iego.cn";
        private static final int PORT = 8001;
        DanceActivity activity;//
       
        public ChatSocket() {
        }
        public ChatSocket(DanceActivity activity) {
                this.activity=activity;
                receive();
        }
        public void send(String msg) {
                try {
                        DatagramSocket socket=new DatagramSocket();
                        //数据包
                        DatagramPacket packet=new DatagramPacket(msg.getBytes("UTF-8"), msg.getBytes().length,
                                        InetAddress.getByName(HOST), PORT);
                        //发送
                        socket.send(packet);
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }
        public void receive() {
                new Thread(){
                        @Override
                        public void run() {
                                DatagramSocket socket=null;
                                try {
                                        socket = new DatagramSocket(PORT);
                                        byte[] data=new byte[1024];
                                        while (true) {
                                                DatagramPacket packet=new DatagramPacket(data, data.length);
                                                //接收数据包
                                                socket.receive(packet);
                                                //strChatMsg是StringBuilder对象,添加聊天信息
                                                activity.strChatMsg.append(new String(data,0,data.length)+"\n");
                                                //为了线程安全,通过activity中的Handler对象通知activity中的TextView控件更新内容
                                                activity.handler.sendEmptyMessage(DanceActivity.UPDATE_CHAT);
                                        }
                                } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                        if(socket!=null){
                                                socket.close();
                                        }
                                }finally{
                                        //socket.disconnect();
                                        if(socket!=null){
                                                socket.close();
                                        }
                                }
                        }
                }.start();
        }

}


评分

参与人数 1技术分 +1 收起 理由
张智文 + 1 别总发分享 还是给你1分 努力搞技术分.

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马