package com.roboo.like.netease; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket; import android.content.Context; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Bundle; import android.os.Handler; import android.os.Handler.Callback; import android.os.Message; import android.view.KeyEvent; import android.view.View; import android.widget.Button; import android.widget.TextView; public class ServerSocketActivity extends BaseActivity { private static final int LISTENING_PORT = 8888; private static final String IP_ADDRESS = "172.16.100.72"; private static final int SERVER_PORT = 10000; private TextView mTVIP; private TextView mTVContent; private Button mBtnSend; private Handler mHandler; private String mIp; private String mContent; private Button mBtnCancle; private ServerSocket mServerSocket; private ServerSocketThread mServerSocketThread; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTVTitle(R.string.tv_server_socket); // TODO setContentView Tag setContentView(R.layout.activity_server_socket); initHandler(); initView(); this.mBtnCancle.setOnClickListener(this); this.mBtnSend.setOnClickListener(this); WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifiManager.getConnectionInfo(); System.out.println("IP = " + intToIp(info.getIpAddress())); mServerSocketThread = new ServerSocketThread(); mServerSocketThread.start(); } private void initHandler() { this.mHandler = new Handler(new Callback() { public boolean handleMessage(Message msg) { mTVContent.setText(mContent); mTVIP.setText(mIp); return true; } }); } private void initView() { this.mTVIP = (TextView) findViewById(R.id.tv_ip); this.mTVContent = (TextView) findViewById(R.id.tv_content); this.mBtnCancle = (Button) findViewById(R.id.btn_cancle); this.mBtnSend = (Button) findViewById(R.id.btn_send); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.ibtn_left_top: handleFinish(); break; case R.id.btn_send: break; case R.id.btn_cancle: this.finish(); default: break; } super.onClick(v); } private String intToIp(int i) { return (i & 0xFF) + "." + ((i >> 8) & 0xFF) + "." + ((i >> 16) & 0xFF) + "." + (i >> 24 & 0xFF); } private class ServerSocketThread extends Thread { public void run() { try { if (null == mServerSocket) { mServerSocket = new ServerSocket(LISTENING_PORT); } while (true) { Socket socket = mServerSocket.accept(); BufferedReader buffer = new BufferedReader(new InputStreamReader(socket.getInputStream())); // 读取数据 String msg = buffer.readLine(); System.out.println("从PC客户端发送过来的信息 = " + msg); mIp = (null == socket.getInetAddress()) ? "Ip地址为空" : "Ip地址 = " + socket.getInetAddress().getHostAddress() + " 主机名 = " + socket.getInetAddress().getHostName(); mContent = msg; mHandler.sendEmptyMessage(1); } } catch (IOException e) { e.printStackTrace(); } finally { if (null != mServerSocket) { try { mServerSocket.close(); } catch (IOException e) { e.printStackTrace(); } } } } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { handleFinish(); return true; } return super.onKeyDown(keyCode, event); } private void handleFinish() { try { mServerSocketThread.interrupt(); mServerSocket.close(); } catch (IOException e) { e.printStackTrace(); } this.finish(); } }