一个简单的Android聊天室

新建一个Android工程,直接在MainActivity中实现我们的代码即可。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ip=(EditText)findViewById(R.id.ip);//输入服务器的IP
    et=(EditText)findViewById(R.id.et);//输入我们所要说的话
    connection=(Button)findViewById(R.id.b1);
    send=(Button)findViewById(R.id.b2);
    text=(TextView)findViewById(R.id.text);
    connection.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

            connect();//连接服务端
        }
    });
    send.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            send();//发送消息

        }
    });
}

我们在onCreate()在初始化我们的控件,并且调用我们的方法

在connect()方法中,我们实现连接服务端

/**
*使用AsyncTask异步访问我们的服务端,不然会堵塞主线程
*/
public void connect() {

    AsyncTask<Void, String, Void> read = new AsyncTask<Void, String, Void>() {

        @Override
        protected Void doInBackground(Void... arg0) {
            try {
                socket = new Socket(ip.getText().toString(), 12345);//连接服务端
                writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));//获取输出流
                reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));//获取输入流
                if(is){
                writer.write(1+"\n");
                writer.flush();
                is=false;
                }
                publishProgress("@success");

            } catch (UnknownHostException e1) {
                Toast.makeText(MainActivity.this, "无法建立链接", Toast.LENGTH_SHORT).show();
            } catch (IOException e1) {
                Toast.makeText(MainActivity.this, "无法建立链接", Toast.LENGTH_SHORT).show();
            }
            try {
                String line;
                while ((line = reader.readLine())!= null) {
                    publishProgress(line);
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onProgressUpdate(String... values) {
            if (values[0].equals("@success")) {
                Toast.makeText(MainActivity.this, "链接成功!", Toast.LENGTH_SHORT).show();

            }
            text.append("别人说:"+values[0]+"\n");//经过测试,如果不加“\n”将不会显示消息
            super.onProgressUpdate(values);
        }
    };
    read.execute();

}

/**
*通过输出流将消息发送出去
*/
public void send(){
try {
text.append(“我说:”+et.getText().toString()+”\n”);
writer.write(et.getText().toString()+”\n”);
writer.flush();
et.setText(“”);
} catch (IOException e) {
e.printStackTrace();
}
}

至此,一个简单的Android聊天室就完成了,写的不好,请多多见谅。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值