上一篇描述了
Android和服务端通过Socket收发文字图片的实现 ,其实在上一篇中就已经实现了今天要做的,今天单独拎出来说一下。
目的:
本次要实现的目的时,服务端中每一个业务逻辑功能对应开启一个端口,这些端口同时开启,并且在该端口中可以同时接收多客户端同时请请求。
并行执行自然要用到多线程的知识,这里不深入探讨多线程的技术,简单的应用即可。
多线程的简单实现代码:
1、new一个Thread类对象
2、重写Thread的run方法
3、在run中写上该线程中要干的事
4、调用Thread.start()方法启动线程
new Thread() { public void run() { //该线程中要实现的逻辑代码 } }.start();
新建线程还有别的方式,比如写一个类继承Thread类或者实现Runnable接口,同时重写他们的run方法等,他们的区别就在于当该类同时需要继承别的父类时,由于一个子类只能继承一个父类,所以不能同时继承Thread类,但是可以同时实现多个接口,所以此时就需要通过实现Runnable接口来定义线程类。
多线程和Socket结合:
上一篇汫过Socket的具体实现,本次将不再螯述
1、 将各个线程的开启代码放入Thread的run方法中,同时开启线程,这样在程序运行时,这些线程可以同时开启,各端口可同
时工作等待客户端连接,这一步即可实现多功能端口同时开启等待连接。
2、 ServerSocketacceptO方法的作用是阻塞式的等待客户端连接,即如果没有客户端连接,程序会阻塞在此,所以为了实现多
客户同时连接,必须一个端口可以同时等待多个监听,在ServerSocketaccept ( ) 外 加 上 while循环,同时在监听到客户端请求
后为该客户端开启独立的子线程处理该客户的请求,这样该端口可以立刻循环返回继续监听等待下一个用户的连接。
1、 将各个线程的开启代码放入Thread的run方法中,同时开启线程,这样在程序运行时,这些线程可以同时开启,各端口可同
时工作等待客户端连接,这一步即可实现多功能端口同时开启等待连接。
2、 ServerSocketacceptO方法的作用是阻塞式的等待客户端连接,即如果没有客户端连接,程序会阻塞在此,所以为了实现多
客户同时连接,必须一个端口可以同时等待多个监听,在ServerSocketaccept ( ) 外 加 上 while循环,同时在监听到客户端请求
后为该客户端开启独立的子线程处理该客户的请求,这样该端口可以立刻循环返回继续监听等待下一个用户的连接。
流程如下图:
//为该端口功能开启独立的线程 new Thread() { public void run() { try { ServerSocket ss = new ServerSocket(30000); //循环监听 while(true) { //阻塞监听客户请求 final Socket s = ss.accept(); //为该用户新开一个线程独立处理请求 new Thread() { public void run() { //处理该用户请求的代码 } }.start(); } } catch (IOException e) { e.printStackTrace(); } } }.start();至此,今天的目标实现了。具体代码可以参考上一篇博文服务端代码中第一个端口的写法。