zoukankan      html  css  js  c++  java
  • 对于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下载,实例代码没用线程池,尽管也在那个包里,只是演示。
  • 相关阅读:
    Linux 下配置多路径及SCSI扫描磁盘重新发现大小
    vSphere vSwitch网络属性配置详解
    勤动脑筋
    如何用visual studio2013编写简单C语言程序
    两个字符窜,在母窜中查找子窜的位置
    如何安装Microsoft Visual C++6.0
    看张子阳如何在30岁前年薪超过30万觉得很有道理几点
    标志位放错了位置
    注意细节
    探索式学习
  • 原文地址:https://www.cnblogs.com/zxub/p/455831.html
Copyright © 2011-2022 走看看