packagecom.example.socketserver;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintWriter;importjava.net.ServerSocket;importjava.net.Socket;importjava.util.ArrayList;importjava.util.List;importandroid.app.Activity;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.util.Log;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.widget.Button;importandroid.widget.Toast;importcom.koushikdutta.async.callback.CompletedCallback;importcom.koushikdutta.async.http.WebSocket;importcom.koushikdutta.async.http.WebSocket.StringCallback;importcom.koushikdutta.async.http.libcore.RequestHeaders;importcom.koushikdutta.async.http.server.AsyncHttpServer;importcom.koushikdutta.async.http.server.AsyncHttpServer.WebSocketRequestCallback;importcom.koushikdutta.async.http.server.AsyncHttpServerRequest;importcom.koushikdutta.async.http.server.AsyncHttpServerResponse;importcom.koushikdutta.async.http.server.HttpServerRequestCallback;public class MainActivity extendsActivity {privateButton btnStart;privateServerSocket serverSocket;privateBufferedReader in;privatePrintWriter out;private Handler hander = newHandler(){
@Overridepublic voidhandleMessage(Message msg) {//TODO Auto-generated method stub
super.handleMessage(msg);
String s=(String)msg.obj;
Toast.makeText(MainActivity.this, s, Toast.LENGTH_LONG).show();
}
};
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnStart=(Button)findViewById(R.id.button1);
btnStart.setOnClickListener(newView.OnClickListener() {
@Overridepublic voidonClick(View v) {//TODO Auto-generated method stub
newServerThread().start();//在新线程中启动SocketServer...
}
});
}
@Overridepublic booleanonCreateOptionsMenu(Menu menu) {//Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);return true;
}
@Overridepublic booleanonOptionsItemSelected(MenuItem item) {//Handle action bar item clicks here. The action bar will//automatically handle clicks on the Home/Up button, so long//as you specify a parent activity in AndroidManifest.xml.
int id =item.getItemId();if (id ==R.id.action_settings) {return true;
}return super.onOptionsItemSelected(item);
}
@Overrideprotected voidonStop() {//TODO Auto-generated method stub
super.onStop();
}private class ServerThread extendsThread{
@Overridepublic voidrun() {//TODO Auto-generated method stub
super.run();try{//serverSocket = new ServerSocket(50005);//默认的路由器地址为Address: 192.168.43.1
serverSocket = new ServerSocket(5000);while (true) {
Socket clientSocket= serverSocket.accept();//阻塞等待处理...
String remoteIP =clientSocket.getInetAddress().getHostAddress();int remotePort =clientSocket.getLocalPort();
System.out.println("A client connected. IP:" + remoteIP+ ", Port: " +remotePort);
System.out.println("server: receiving.............");//获得 client 端的输入输出流,为进行交互做准备
in = new BufferedReader(newInputStreamReader(
clientSocket.getInputStream()));
out= new PrintWriter(clientSocket.getOutputStream(), false);//获得 client 端发送的数据
String tmp =in.readLine();//String content = new String(tmp.getBytes("utf-8"));
System.out.println("Client message is: " +tmp);//向 client 端发送响应数据
out.println("Your message has been received successfully!.");//关闭各个流
out.close();
in.close();
Message message=hander.obtainMessage();
message.obj=tmp;
hander.sendMessage(message);try{
Thread.sleep(100);
}catch(InterruptedException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}
}catch(IOException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}