多线程+Socket实现多用户多功能并行请求的服务端设计

上一篇描述了 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循环,同时在监听到客户端请求
后为该客户端开启独立的子线程处理该客户的请求,这样该端口可以立刻循环返回继续监听等待下一个用户的连接。
流程如下图:


//为该端口功能开启独立的线程
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();
至此,今天的目标实现了。具体代码可以参考上一篇博文服务端代码中第一个端口的写法。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值