tcp服务器,线程池,RSA AES加密(可配置自定义加密或者不加密),Log4j记录日志。
下载到http://download.youkuaiyun.com/source/1508422 吧,没有下载分,这里没有上传的地方。
欢迎各种批评、建议。有问题邮件联系:zyongsheng83@163.com
如需ZYSLib.jar源码,同样邮件联系。
简要解释:
Server类:
initAdditionalTimingTasks方法用于初始化一些定时任务,这里用不到。
服务器端用的Session类:
方法connectionInterrupted用于处理连接异常断开,这里断开之后清除Session信息,不做其他操作。
disposeCommand用于处理客户端发来的命令。
命令的定义类:
这里只定义了3个消息号:登录,欢迎消息,聊天。
消息号必须为5为整型。90000以后为框架预留消息号,不要使用。
客户端类:
方法onInput处理命令行输入。
onConnected处理建立连接成功的操作。
disposeCommand同样是客户端处理消息的方法。
客户端启动按以下步骤:初始化客户端对象,连接,开始命令行读取线程。
客户端初始化的第三个参数是消息加密类,这里使用的是框架默认的RSA DES加密。
服务器配置文件server.properties:
# Server listening port
Port=9998
# The socket data char set from client
ClientCharSet=utf-8
# Use the implementing class from server.core.ConnSession
SessionClassName=test.ClientSession
# String used to separate the parameters
SocketDataSeperator=:
# If Encrypt in transfer enabled
SessionEncryptEnabled=true
# Class name used to Encrypt, must implementing from SessionEncrypt
# and only used when SessionEncryptEnabled is true
SessionEncryptClassName=zys.net.tcp.SessionEncryptRSA_AES
# The delay to send heartbeat to client to make the socket available
HeartbeatDelay=30000
设置的分别为:服务器端口,与客户端传输消息字符集,服务器Session处理类,消息分隔符,是否启用加密,加密类,心跳线程间隔(心跳线程就是定时给每个客户端发一个消息,放置socket长时间不活跃造成的假死现象,同时检测客户端异常断开)
log4j的配置文件就不说了。
局限:目前传输局限于字符串消息,因为项目中还没用到字节传输,所以也懒得改。