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下载
,实例代码没用线程池,尽管也在那个包里,只是演示。
查看全文
相关阅读:
Multi-Tenancy模式,基础服务大规模扩张的时候,是应该推进了。
Python中的tuple
Create and Call HttpHandler in SharePoint
各种数据库(oracle、mysql、sqlserver等)在Spring中数据源的配置和JDBC驱动包
BNU 34986 Football on Table
Effective JavaScript Item 31 优先使用Object.getPrototypeOf,而不是__proto__
POJ 3080 Blue Jeans (后缀数组)
HDU 2586 How far away ?(LCA模板 近期公共祖先啊)
自己主动化的在程序中显示SVN版本号
在Mac OS X中部署Tomcat的经验
原文地址:https://www.cnblogs.com/zxub/p/455831.html
最新文章
php RSA 加密 与java加密互交,java解密
数据结构之---C语言实现最小生成树之prim(普里姆)算法
使用Eclipse Memory Analyzer分析内存
js canvas画柱状图 没什么高端的 就是一篇偶尔思路的
WifiStateMachine学习笔记
win7系统扩展双屏幕时,怎样在两个屏幕下都显示任务栏
Maven入门学习
后缀数组suffix array
C++中的友元函数和友元类
一种大气简单的Web管理(陈列)版面设计
热门文章
Linux Shell变量
Swift的基础,操作符,字符串和集合类型
将电话号码中间的四位数字编成 * 号
acdream 1430 SETI 后缀数组+height分组
怎样解决CRITICAL glance [-] AttributeError: 'NoneType' object has no attribute 'drivername'
Android的事件分发
Bootstrapbutton
欢迎使用CSDN-markdown编辑器
GCD网络多线程---同步运行,异步运行,串行队列,并行队列
Web报表工具FineReport实现EXCEL数据导入自由报表
Copyright © 2011-2022 走看看