MainActivity.java

package com.houxy.chatserver;import android.app.Activity;import android.os.Handler;import android.os.Looper;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity implements View.OnClickListener{    private static final int PORT = 1234;    private Button btnSendMSG;    private EditText editMSG;    private TextView receivedText;    private Handler mHandler = new Handler(Looper.getMainLooper());    private TcpServer tcpServer = new TcpServer() {        @Override        public void onReceive(final String s) {            mHandler.post(new Runnable() {                @Override                public void run() {                    receivedText.append("Client :"+ s + "\n\n");                }            });        }        @Override        public void onConnectBreak() {            mHandler.post(new Runnable() {                @Override                public void run() {                    Toast.makeText(getApplicationContext(),                                    "连接失败", Toast.LENGTH_LONG).show();                    refreshUI(false);                }            });        }        @Override        public void onConnect() {            mHandler.post(new Runnable() {                @Override                public void run() {                    Toast.makeText(getApplicationContext(),                             "连接成功", Toast.LENGTH_LONG).show();                    Log.d("runFlag", "1");                    refreshUI(true);                    Log.d("runFlag", "12");                }            });        }        @Override        public void onSendSuccess(final String s) {            mHandler.post(new Runnable() {                @Override                public void run() {                    receivedText.append("我 :" + s + "\n\n");                }            });        }    };    private void refreshUI(boolean isConnected) {        btnSendMSG.setEnabled(isConnected);        btnSendMSG.setBackgroundResource(isConnected ?               R.drawable.send_button : R.drawable.send_button_disabled);    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        refreshUI(false);        tcpServer.start(PORT);        Log.d("zhouqi", "create");    }    @Override    public void onClick(View v) {        switch (v.getId()){            case R.id.btn_sendMsg:                String msg = editMSG.getText().toString();                editMSG.setText("");                tcpServer.getTransceiver().sendMSG(msg);                break;            default:                break;        }    }    private void initView() {        btnSendMSG = (Button)findViewById(R.id.btn_sendMsg);        editMSG = (EditText)findViewById(R.id.edit_msg);        receivedText = (TextView)findViewById(R.id.tx_receive);        btnSendMSG.setOnClickListener(this);    }    @Override    protected void onStop() {        super.onStop();        tcpServer.disConnected();        Log.d("zhouqi", "stop");    }}

TcpServer.java

package com.houxy.chatserver;import android.util.Log;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.InetSocketAddress;import java.net.ServerSocket;import java.net.Socket;/** * Created by asus on 2016/3/23. */public abstract class TcpServer implements Runnable{    private int port;    private ServerSocket serverSocket;    private Socket socket;    private boolean runFlag=true;    private SocketTransceiver transceiver;    public void start(int port){        this.port = port;        new Thread(this).start();    }    @Override    public void run() {        try {            serverSocket = new ServerSocket(port);            while (runFlag){                socket = serverSocket.accept();                this.onConnect();                transceiver = new SocketTransceiver() {                    @Override                    public void onReceive(String s) {                        TcpServer.this.onReceive(s);                    }                    @Override                    public void onConnectBreak() {                        TcpServer.this.onConnectBreak();                    }                    @Override                    public void onSendSuccess(String s) {                        TcpServer.this.onSendSuccess(s);                    }                };                transceiver.start(socket);            }        } catch (IOException e) {            this.onConnectBreak();            e.printStackTrace();        }        //服务器与客服端断开    }    public boolean isConnected(){        return runFlag;    }    public void disConnected(){        runFlag = false;        if(transceiver!=null){            transceiver.stop();            transceiver=null;        }    }    public  SocketTransceiver getTransceiver(){        return transceiver;    }    public abstract void onReceive(String s);    public abstract void onConnectBreak();    public abstract void onConnect();    public abstract void onSendSuccess(String s);}

Transceiver.java

  • 这里的程序和Client端的收发器一致,故不再重复贴出代码

Server端截图

2016-03-24_223611.png

更多相关文章

  1. Android(安卓)socket通信app Client端
  2. adb使用wifi无线连接调试Android设备
  3. RF Analyzer for Android(安卓)安卓平台连接HackRF的App
  4. [置顶] Android基础--ConnectivityManager检查网络连接
  5. Android判断网络连接
  6. Android(安卓)判断网络连接情况
  7. android下为自己定义wifimanager类
  8. 判断是否连接网络
  9. 赵雅智:service_bindService生命周期

随机推荐

  1. Android强制为自身应用设置实现多语言
  2. android的logcat详细用法!
  3. Android实现全屏的方法
  4. Android能否在子线程刷新UI
  5. Android更新ADT到R17以后,不能用第三方ja
  6. Attribute is missing the Android(安卓)
  7. Android中使EditText失去焦点,edittext禁
  8. CardView 设置水波纹效果
  9. Android(安卓)常用控件(三)学习笔记
  10. Android(安卓)Q : 安卓源码、水滴屏适配