public class MainActivity extends AppCompatActivity {
private SimpleHttpServer shs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebConfiguration wed = new WebConfiguration(8078, 50);
shs = new SimpleHttpServer(wed);
shs.startAsync();
}
@Override
protected void onDestroy() {
try {
shs.stopAsync();
} catch (IOException e) {
e.printStackTrace();
}
super.onDestroy();
}
public class SimpleHttpServer {
private final ExecutorService threadPoob;
private boolean isEnable;
private WebConfiguration web;
private ServerSocket socket;
private Socket remotePeer;
public SimpleHttpServer(WebConfiguration web){
this.web=web;
threadPoob = Executors.newCachedThreadPool();
}
public void startAsync(){
isEnable=true;
new Thread(new Runnable() {
@Override
public void run() {
doProcSync();
}
}).start();
}
public void stopAsync() throws IOException {
if(!isEnable){
return;
}
isEnable=false;
if(socket!=null){
socket.close();
socket=null;
}
}
private void doProcSync() {
try {
InetSocketAddress socketaddress=new InetSocketAddress(web.getPort());
socket=new ServerSocket();
socket.bind(socketaddress);
while (isEnable){
otePeer = socket.accept();
threadPoob.submit(new Runnable() {
@Override
public void run() {
onAcceptRemotePeer(remotePeer);
}
});
}
} catch (IOException e) {
Log.e("doProcSync",e.toString());
e.printStackTrace();
}
}
private void onAcceptRemotePeer(Socket remotePeer) {
try {
InputStream inputStream = remotePeer.getInputStream();
String headerLine=null;
while ((headerLine=StreamToolkit.reabLing(inputStream))!=null){
if(headerLine.equals("\r\n")){
return;
}
Log.e("spy",headerLine);
}
Log.e("---","成功");
} catch (IOException e) {
Log.e("onAcceptRemotePeer",e.toString());
}
}
}
class StreamToolkit {
public static String reabLing(InputStream inputStream) throws IOException {
int c1=0;
int c2=0;
StringBuilder sb=new StringBuilder();
while (c2!=-1&&!(c1=='\r'&&c2=='\n')){
c1=c2;
c2=inputStream.read();
sb.append((char) c2);
}
if(sb.length()!=0){
return sb.toString();
}
return null;
}
}
private int maxParallels;
public WebConfiguration(int port,int maxParallels){
this.port=port;
this.maxParallels=maxParallels;
}
public void setPort(int port){
this.port=port;
}
public void setMaxParallels(int maxParallels){
this.maxParallels=maxParallels;
}
public int getPort(){
return this.port;
}
public int getMaxParallels(){
return this.maxParallels;
}
}
打开App,阅读手记