• 对于C/S应用的小结【原创】


      年初做了个C/S的项目,当时找了一把的资料,整理整理,写了个例子出来,今天一看,好像不怎么样,不够通用,于是就操起Eclipse,把它给改造了,抽出业务逻辑的具体处理,一个是AbstractServerHandle (抽象类),一个是ClientHandleImpl(接口),加入线程池(以前写的一个小东西),再把log4j给弄进去,就有了最终的csComm.jar。
      在这里,源码公开也没什么必要了,厉害的根本就不会看,新手就直接用这个包好了,如果真的有必要的话,是可以发布源码的,看需要的人多不多。
      要实现c/s交互,需要实现那个接口(ClientHandleImpl)以及继承那个抽象类(AbstractServerHandle ),然后实例化Server及Client,就可以了,下面是示例代码:
    package com.cnblogs.zxub.csDemo;

    import java.net.Socket;
    import java.util.ArrayList;
    import java.util.List;

    import com.cnblogs.zxub.csComm.server.AbstractServerHandle;

    /**
     * 
    @author zxub 2006-7-20 下午04:37:51
     
    */

    public class ServerHandle extends AbstractServerHandle
    {
        
    public void showMessage(String msg)
        
    {
            System.out.println(msg);
        }


        
    public void handle(String command, Socket socket)
        
    {
            System.out.println(
    "get client command:" + command);
            List msgList 
    = new ArrayList();
            msgList.add(
    "get [" + command + "]");
            
    this.sendMsgToClient(msgList, socket);
        }

    }


    package com.cnblogs.zxub.csDemo;

    import java.net.Socket;

    import com.cnblogs.zxub.csComm.client.ClientHandleImpl;

    /**
     * 
    @author zxub 2006-7-20 下午04:41:21
     
    */

    public class ClientHandle implements ClientHandleImpl
    {

        
    public void handle(String reply, Socket socket)
        
    {
            showMessage(
    "get server reply:" + reply);
        }


        
    public void showMessage(String msg)
        
    {
            System.out.println(msg);
        }


    }


    package com.cnblogs.zxub.csDemo;

    import com.cnblogs.zxub.csComm.server.Server;

    /**
     * 
    @author zxub 2006-7-20 下午04:43:49
     * 
     
    */

    public class ServerTest
    {
        
    public static void main(String[] args)
        
    {
            Server server
    =new Server(8888,new ServerHandle());
            
    new Thread(server).start();
        }

    }


    package com.cnblogs.zxub.csDemo;

    import com.cnblogs.zxub.csComm.client.Client;

    /**
     * 
    @author zxub 2006-7-20 下午05:02:57
     * 
     
    */

    public class ClientTest
    {

        
    public static void main(String[] args)
        
    {
            Client client
    =new Client("127.0.0.1",8888,new ClientHandle());
            
    new Thread(client).start();
            client.setSendingMsg(
    "test");
            client.setSendingMsg(
    "test2");
        }


    }


      运行后就有效果了。
      csDemo下载,实例代码没用线程池,尽管也在那个包里,只是演示。
  • 相关阅读:
    Spring的设计理念和整体架构
    垃圾收集器与内存分配策略(3)
    垃圾收集器与内存分配策略(2)
    实践一次有趣的sql优化
    PHP之static
    PHP之const
    MySQL数据库常用操作
    PHP之__aotoload()自动加载机制
    PHP之类的属性方法重写
    MYSQL工具类简单实现
  • 原文地址:https://www.cnblogs.com/zxub/p/455831.html
Copyright © 2020-2023  润新知