IM菜鸟学习之Socket聊天-客户端


--本篇介绍了IM聊天中客户端的编写
1.客户端任务如下:
        1.客户端发起连接请求
        2.客户端像服务器端发送数据
        3.客户端接收服务器的数据
2.需求分析
    客户端要完成以上的任务那么我们必须要有以下几个控件
        1.需要一个展示服务器发来消息的TextView,当服务器有消息发来时,更新TextView
        2.需要一个客户端发消息的EditText,用来展示用户输入的将要发给服务器的内容
        3.需要一个发送消息的Button,用来发送客户端的聊天内容
3.创建客户端页面布局
    1.新建一个android项目,名字叫做ChatClientDemo,包名使用默认的包名,因为我的sdk版本比较高,
        系统会默认给我添加一个fragment,所以我选择了不生成Activity.
    2.创建布局文件activity_chat:代码如下
/************************************************************************************************/
    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:text="这里接受服务器发来的信息"
        android:gravity="center_vertical" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:hint="输入聊天内容"/>
    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="发送"/>
</LinearLayout>    
/***********************************************************************************************/
    3.创建客户端Activity
package com.example.chatsocket;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;

import com.example.chatclientdemo.R;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class ChatUiActivity extends Activity{
    private final String        DEBUG_TAG   = "ChatUiActivity";
    
    private EditText et=null;//用户输入的内容
    private TextView tv=null;//服务端发来的内容
    private Button bt = null;//发送按钮
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_chatui);
        fill();
    }

    private void fill() {
        et=(EditText)findViewById(R.id.editText1);
        tv=(TextView)findViewById(R.id.textView1);
        bt=(Button)findViewById(R.id.button3);
        bt.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Socket socket = null;  
                String message = et.getText().toString() + "/r/n";   
                try   
                {     
                    //创建Socket  
                  socket = new Socket("192.168.13.103",8087);   
//                    socket = new Socket("10.14.114.127",54321); //IP:10.14.114.127,端口54321  
                    //向服务器发送消息  
                    PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);        
                    out.println(message);   
                      
                    //接收来自服务器的消息  
                    BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));   
                    String msg = br.readLine();   
                      
                    if ( msg != null )  
                    {  
                        tv.setText(msg);  
                    }  
                    else  
                    {  
                        tv.setText("数据错误!");  
                    }  
                    //关闭流  
                    out.close();  
                    br.close();  
                    //关闭Socket  
                    socket.close();   
                }  
                catch (Exception e)   
                {  
                    // TODO: handle exception  
                    Log.e(DEBUG_TAG, e.toString());  
                }  
            }
        });
    }
}
        4.manifest
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.chatclientdemo"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity android:name="com.example.chatsocket.ChatUiActivity"  
                  android:label="@string/app_name">  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  
                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity>
    </application>

</manifest>
        
   

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值