梦幻之旅
DEBUG - 天道酬勤
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
671 随笔 :: 6 文章 :: 256 评论 :: 0 Trackbacks
<
2011年10月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
公告
本博客中未注原创的文章均为转载,对转载内容可能做了些修改和增加图片注释,如果侵犯了您的版权,或没有注明原作者,请谅解
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(21)
给我留言
查看公开留言
查看私人留言
随笔分类
(644)
Android(10)
(rss)
ANT(4)
(rss)
C#(10)
(rss)
C/C++(16)
(rss)
CSS(3)
(rss)
DataBase(119)
(rss)
DB-DailyMmaintenance(16)
(rss)
Design Patterns(27)
(rss)
english
(rss)
Exceptions(7)
(rss)
EXT(39)
(rss)
FLASH(9)
(rss)
Hardware(20)
(rss)
Hibernate(13)
(rss)
Html(23)
(rss)
Java(143)
(rss)
java Net(10)
(rss)
JavaScript(39)
(rss)
Linux(26)
(rss)
php(5)
(rss)
Regular Exp(3)
(rss)
Spring(17)
(rss)
Struts(12)
(rss)
TOOL(43)
(rss)
VB/VBA/VBS(5)
(rss)
webservice(9)
(rss)
XML(2)
(rss)
我的梦幻旅途(14)
(rss)
随笔档案
(669)
2017年9月 (4)
2016年10月 (1)
2015年6月 (1)
2015年4月 (2)
2015年1月 (1)
2014年8月 (2)
2014年7月 (9)
2014年6月 (1)
2014年5月 (2)
2014年4月 (3)
2014年3月 (3)
2013年10月 (4)
2013年9月 (8)
2013年8月 (4)
2013年6月 (3)
2013年5月 (4)
2013年4月 (7)
2013年3月 (1)
2013年1月 (3)
2012年12月 (4)
2012年11月 (1)
2012年10月 (1)
2012年9月 (4)
2012年8月 (1)
2012年7月 (2)
2012年6月 (1)
2012年5月 (4)
2012年4月 (2)
2012年3月 (1)
2012年2月 (4)
2012年1月 (6)
2011年12月 (10)
2011年11月 (7)
2011年10月 (6)
2011年9月 (37)
2011年8月 (34)
2011年7月 (44)
2011年6月 (10)
2011年5月 (5)
2011年4月 (3)
2011年3月 (1)
2011年2月 (1)
2011年1月 (18)
2010年12月 (9)
2010年11月 (13)
2010年10月 (17)
2010年9月 (2)
2010年8月 (10)
2010年7月 (10)
2010年6月 (5)
2010年5月 (8)
2010年4月 (9)
2010年3月 (11)
2010年2月 (3)
2010年1月 (8)
2009年12月 (6)
2009年11月 (10)
2009年10月 (5)
2009年9月 (1)
2009年8月 (18)
2009年7月 (6)
2009年6月 (2)
2009年5月 (1)
2009年4月 (4)
2009年3月 (6)
2009年2月 (5)
2009年1月 (3)
2008年12月 (13)
2008年11月 (13)
2008年10月 (30)
2008年9月 (9)
2008年8月 (24)
2008年7月 (17)
2008年6月 (15)
2008年5月 (16)
2008年4月 (15)
2008年3月 (19)
2008年2月 (3)
2008年1月 (20)
2007年12月 (24)
2007年11月 (9)
文章档案
(6)
2008年4月 (1)
2008年3月 (1)
2008年1月 (2)
2007年11月 (2)
最新随笔
1. PP代码生成器(四) 使用解决方案生成代码
2. PP代码生成器(三) 设计freemarker模板, 创建解决方案
3. PP代码生成器(二) 解决方案, 生成任务, 辅助设计面板
4. PP代码生成器(一) 简介, 下载, 运行
5. PP持久层代码生成器
6. 比较好的博客
7. 系统集成项目管理工程师
8. 软件公司项目经理岗位职责
9. 联想笔记本 显示屏 键盘失灵 释放静电
10. eclipse maven
积分与排名
积分 - 953991
排名 - 37
最新评论
1. re: Myeclipse 快捷键大全(绝对全)
crl+向右箭头(输入法有问题打不出来)移到下一个参数的位置,然后crl+shift+向右箭头 选中该位置的参数即可
--红领巾
2. re: Log4j基本使用方法
555
--555
3. re: Myeclipse 快捷键大全(绝对全)[未登录]
很不错,谢谢
--银狐
4. re: Flex 表单
是谁这么无聊~呜~~~
--HUIKK
5. re: Spring AfterReturning 异常
具体是什么意思啊
--dingli
阅读排行榜
1. Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream(70015)
2. log4j.properties 使用说明(42070)
3. Myeclipse 快捷键大全(绝对全)(32711)
4. TNSNAMES.ORA 配置(24380)
5. oracle 树状查询(21351)
评论排行榜
1. Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream(53)
2. JMail 异常: java.lang.NoClassDefFoundError: javax/activation/DataSource(21)
3. javax.mail.MessagingException: 530 5.7.0 Must issue a STARTTLS command first(14)
4. java 读取 excel 2003 或 excel 2007(14)
5. java.lang.UnsupportedClassVersionError: Bad version number in .class file(8)
TCP一点东东
package org.upeng.mail.net.server;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import org.upeng.mail.net.util.AESUtil;
import org.upeng.mail.net.util.NetConfit;
import org.upeng.mail.net.util.NetLoger;
import org.upeng.mail.process.InstructionProcessor;
/**/
/*
*
* <ul>
* <li>Title:[服务器处理类]</li>
* <li>Description: [type of functional description]</li>
* <li>Copyright 2009 Upengs Co., Ltd.</li>
* <li>All right reserved.</li>
* <li>Created by [Huyvanpull] [2011-9-5]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*
* @version 1.0
*/
public
class ServerHandler implements Runnable
{
/**/
/*
* SOCKET
*/
private Socket socket;
/**/
/*
* 缓冲写入
*/
private BufferedWriter bw;
/**/
/*
* 缓冲读入
*/
private BufferedReader br;
/**/
/*
* 指令处理缓存
*/
private InstructionProcessor processor;
/**/
/*
*
* <ul>
* <li>Description:[构造方法]</li>
* <ul>
*
* @param socket
*/
public
ServerHandler(Socket socket)
{
this.socket
=
socket;
processor
=
new InstructionProcessor();
}
public
void run()
{
try
{
//
创建缓冲读写
br
=
new BufferedReader(new InputStreamReader(socket
.getInputStream()));
bw
=
new BufferedWriter(new OutputStreamWriter(socket
.getOutputStream()));
//
客户端发来的消息
String msg
=
null
;
while
(true)
{
msg
=
readLine();
//
这里是远程商品,发向远程
processor.process(getRemoteIp(), msg);
write(NetConfit.tcp_oparator_success);
}
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
freeSource();
}
}
/**/
/*
*
* <ul>
* <li>Description:[写数据]</li>
* <li>Created by [Huyvanpull] [2011-9-5]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*
* @param msg
* @throws IOException
*/
private void write(String msg) throws IOException
{
//
判断写入的消息是否合法
if
(msg
==
null
||
"".equals(msg))
{
return
;
}
//
处理消息,加上部首, 且加密数据,防止非法者抓包
String encodeMsg
=
NetConfit.tcp_msg_head
+
msg;
encodeMsg
=
AESUtil.encrypt(encodeMsg, NetConfit.password);
//
写数据
bw.write(encodeMsg);
bw.newLine();
bw.flush();
//
记录日志
NetLoger.logSnd(getRemoteIp(), socket.getPort(), msg);
}
/**/
/*
*
* <ul>
* <li>Description:[读数据]</li>
* <li>Created by [Huyvanpull] [2011-9-5]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*
* @return
* @throws IOException
*/
private String readLine() throws IOException
{
String decodeMsg
=
"";
//
读取一行数据,并判断数据是否非法
String endcodeMsg
=
br.readLine();
if
(endcodeMsg
==
null
||
"".equals(endcodeMsg))
{
return
decodeMsg;
}
//
解密数据,并判断数据是否是合法的
decodeMsg
=
AESUtil.decrypt(endcodeMsg, NetConfit.password);
if
(decodeMsg.length()
<
5
||
!NetConfit.tcp_msg_head.equals(decodeMsg.
substring
(
0
,
4
)))
{
//
如果消息不合法
return
"";
}
else
{
decodeMsg
=
decodeMsg.
substring
(
4
);
}
//
写入日志
NetLoger.logRsv(getRemoteIp(), socket.getPort(), decodeMsg);
//
返回结果
return
decodeMsg;
}
/**/
/*
*
* <ul>
* <li>Description:[得到远程IP]</li>
* <li>Created by [Huyvanpull] [2011-9-7]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*
* @return
*/
private String getRemoteIp()
{
return
socket.getInetAddress().getHostAddress().toString();
}
/**/
/*
*
* <ul>
* <li>Description:[释放资源]</li>
* <li>Created by [Huyvanpull] [2011-9-6]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*/
private void freeSource()
{
try
{
//
释放BufferWriter
if
(bw
!=
null
)
{
bw.
close
();
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
try
{
//
释放BufferReader
if
(br
!=
null
)
{
br.
close
();
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
try
{
//
释放Socket
if
(socket
!=
null
)
{
socket.
close
();
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
2.
package
org.upeng.mail.net.server;
import
java.io.IOException;
import
java.net.ServerSocket;
import
java.net.Socket;
import
java.net.SocketTimeoutException;
import
java.util.concurrent.ExecutorService;
import
java.util.concurrent.Executors;
import
org.upeng.mail.net.util.NetConfit;
import
org.upeng.mail.net.util.NetLoger;
/** */
/**
* <ul>
* <li>Title:[TCPServer]</li>
* <li>Description: [TCP网络服务]</li>
* <li>Copyright 2009 Upengs Co., Ltd.</li>
* <li>All right reserved.</li>
* <li>Created by [Huyvanpull] [2011-9-6]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*
*
@version
1.0
*/
public
class
TCPServer
extends
Thread
{
/** */
/**
TCP服务器实例
*/
private
static
TCPServer tcpServer
=
new
TCPServer();
/** */
/**
server socket
*/
private
ServerSocket serverSocket;
private
ExecutorService executorService;
/** */
/**
端口号
*/
private
int
port;
/** */
/**
是否启动成功(如端口已经被占用,就不能启动成功)
*/
private
boolean
isStoped
=
false
;
/** */
/**
* <ul>
* <li>Description:[构造方法]</li>
* <ul>
*/
private
TCPServer()
{
startServer();
}
/** */
/**
* <ul>
* <li>Description:[得到单态的实例]</li>
* <li>Created by [Huyvanpull] [2011-9-6]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*
*
@return
*/
public
static
TCPServer getInstance()
{
return
tcpServer;
}
/**/
/*
* (non-Javadoc)
*
* @see java.lang.Thread#run()
*/
public
void
run()
{
this
.service();
}
/** */
/**
* <ul>
* <li>Description:[服务]</li>
* <li>Created by [Huyvanpull] [2011-9-6]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*/
private
void
service()
{
//
测试信息
StringBuffer debugInfo
=
new
StringBuffer();
while
(
!
isStoped)
{
Socket socket
=
null
;
try
{
//
等等连接
socket
=
serverSocket.accept();
//
测试信息
debugInfo.delete(
0
, debugInfo.length());
debugInfo.append(
"
服务器与
"
);
debugInfo.append(socket.getRemoteSocketAddress().toString());
debugInfo.append(
"
建立连接
"
);
NetLoger.log(debugInfo.toString());
//
服务器处理线程
executorService.execute(
new
ServerHandler(socket));
}
catch
(SocketTimeoutException stex)
{}
catch
(Exception e)
{
e.printStackTrace();
}
}
}
/** */
/**
* <ul>
* <li>Description:[服务器是否启动成功]</li>
* <li>Created by [Huyvanpull] [2011-9-6]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*
*
@return
*/
public
boolean
isStopeded()
{
return
isStoped;
}
/** */
/**
* <ul>
* <li>Description:[启动服务器]</li>
* <li>Created by [Huyvanpull] [2011-9-6]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*/
private
void
startServer()
{
//
设置端口,是测试模式和正式模式
this
.port
=
NetConfit.localPort;
try
{
serverSocket
=
new
ServerSocket(port);
serverSocket.setSoTimeout(
30000
);
executorService
=
Executors.newCachedThreadPool();
NetLoger.log(
"
TCP服务器启动成功.
"
);
this
.start();
}
catch
(Exception ex)
{
isStoped
=
true
;
NetLoger.log(
"
TCP服务器启动失败.
"
);
ex.printStackTrace();
}
}
/** */
/**
* <ul>
* <li>Description:[关闭服务器]</li>
* <li>Created by [Huyvanpull] [2011-9-6]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*/
@SuppressWarnings(
"
deprecation
"
)
public
void
shutDown()
{
try
{
this
.executorService.shutdown();
this
.executorService.shutdownNow();
this
.isStoped
=
true
;
serverSocket.close();
}
catch
(Exception ex)
{
ex.printStackTrace();
}
NetLoger.log(
"
关闭socket服务器
"
);
}
public
static
void
main(String[] args)
throws
IOException
{
TCPServer.getInstance();
System.out.println(TCPServer.getInstance().isStoped);
}
}
posted on 2011-10-22 00:51
HUIKK
阅读(392)
评论(0)
编辑
收藏
所属分类:
java Net
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
TCP一点东东
(转)MINA2 之IoBuffer
(转)Mina 框架总结
socketPool
apache mina框架小试
jboss netty 框架小试
java 简单socket 通信
[转]JAVA-用HttpClient来模拟浏览器GET,POST
UDP
java 得到本机所有ip
Powered by:
BlogJava
Copyright © HUIKK