android 服务端,将Android端作为服务器,用PC端或其他为客户端

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;

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值