歡迎來到小米的博客
希望能和您交流Java編程的知識和見解
BlogJava
首頁
新隨筆
聯(lián)系
聚合
管理
隨筆-57 評論-202 文章-17 trackbacks-0
用NIO實(shí)現(xiàn)的簡單的網(wǎng)絡(luò)服務(wù)器端
下面是我的一個簡單的網(wǎng)絡(luò)服務(wù)器端的程序,程序的流程是監(jiān)聽ACCEPT事件,然后往客戶端輸出一串字符串。是不是很簡單。
package sample.nio;
import java.io.
*
;
import java.net.
*
;
import java.nio.channels.
*
;
import java.util.
*
;
/**/
/*
*
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2005</p>
*
* <p>Company: </p>
*
* @author George Hill
* @version 1.0
*/
public
class
Server
{
private
int
port;
public
Server(
int
port)
{
this
.port
=
port;
}
public
void
startServer() throws IOException
{
//
創(chuàng)建ServerSocketChannel并且綁定到指定的端口
ServerSocketChannel ssc
=
ServerSocketChannel.open();
InetSocketAddress address
=
new
InetSocketAddress(InetAddress.getLocalHost(), port);
ssc.socket().bind(address);
ssc.configureBlocking(
false
);
//
創(chuàng)建Selector,并且注冊ACCEPT事件
Selector selector
=
Selector.open();
SelectionKey skey
=
ssc.register(selector, SelectionKey.OP_ACCEPT);
boolean stop
=
false
;
int
n
=
0
;
System.
out
.println(
"
Server Start
"
);
//
輪詢
while
(
!
stop)
{
//
獲取Selector返回的時間值
n
=
selector.select();
//
當(dāng)傳回的值大于0事,讀時間發(fā)生了
if
(n
>
0
)
{
Set
set
=
selector.selectedKeys();
Iterator it
=
set
.iterator();
while
(it.hasNext())
{
skey
=
(SelectionKey) it.next();
it.remove();
if
(skey.isAcceptable())
{
//
從channel()中取得剛剛注冊的Channel
Socket socket
=
((ServerSocketChannel) skey.channel()).accept().socket();
PrintWriter writer
=
new
PrintWriter(socket.getOutputStream(),
true
);
//
將"Hello, World"寫入
writer.write(
"
Hello, World!\n
"
);
//
睡眠3秒
try
{
Thread.sleep(
3000
);
}
catch
(InterruptedException ie)
{
}
//
將"EXIT"寫入Buffer
writer.write(
"
EXIT
"
);
//
退出程序
writer.close();
//
stop = true;
}
}
}
}
ssc.close();
System.
out
.println(
"
Server Stop
"
);
}
public
static
void
main(String[] args) throws Exception
{
Server server
=
new
Server(
5000
);
server.startServer();
}
}
posted on 2005-05-18 12:21
小米
閱讀(734)
評論(0)
編輯
收藏
所屬分類:
Java
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
由JComponent生成BufferedImage
如何將BufferedImage實(shí)例保存為BMP文件
關(guān)閉JBuilder2005的Smart MemberInsight功能
用JFreeChart畫柱狀圖的范例
用ChartDirector在JSP中畫統(tǒng)計(jì)圖
用java.util.Timer定時執(zhí)行任務(wù)
JavaMail的簡單實(shí)例
如何比較兩個有可能為null的實(shí)例
從SocketChannel對象池中獲取的實(shí)例,使用時應(yīng)注意的問題
JDK Dynamic Proxy模式的簡單范例
小米,生活在深圳,專注于Java,主要從事數(shù)據(jù)庫和網(wǎng)頁編程。現(xiàn)在在學(xué)習(xí)著Hibernate和Spring。喜歡游戲、音樂和臺球。聯(lián)系方式:georgehill@21cn.com
<
2005年5月
>
日
一
二
三
四
五
六
24
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
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(27)
給我留言
查看公開留言
查看私人留言
隨筆分類
Hibernate(15)
Java(17)
Spring(1)
Struts(5)
其它(5)
數(shù)據(jù)庫(2)
生活隨筆(12)
隨筆檔案
2006年4月 (1)
2006年3月 (1)
2005年8月 (1)
2005年7月 (11)
2005年6月 (13)
2005年5月 (30)
文章分類
Eclipse(1)
Java(8)
其它(8)
文章檔案
2005年7月 (1)
2005年6月 (13)
2005年5月 (3)
我的朋友們
emu的博客
Java BY
我的鏈接
Java Research
SUN Java技術(shù)中文社區(qū)
拯救程序員王俊
搜索
積分與排名
積分 - 233786
排名 - 247
最新評論
1.?re: Hibernate的一對一關(guān)聯(lián)實(shí)例
根據(jù)寫了報(bào)錯了是怎么回事
--33
2.?re: 用java.util.Timer定時執(zhí)行任務(wù)
評論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--yunp
3.?re: Hibernate的一對一關(guān)聯(lián)實(shí)例
好樣的
--vds
4.?re: 如何在Struts中實(shí)現(xiàn)分頁顯示數(shù)據(jù)(1)
PageData中的集合是所有都取出,還是用多少取多少,若是前者,會拖慢系統(tǒng)的。
--李亞男
5.?re: BMP文件格式
評論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--見面
閱讀排行榜
1.?用java.util.Timer定時執(zhí)行任務(wù)(33754)
2.?用JFreeChart畫柱狀圖的范例(10701)
3.?《深入淺出Hibernate》讀書筆記(3)——數(shù)據(jù)緩存(6118)
4.?《深入淺出Hibernate》讀書筆記(8)——Hibernate分頁(5563)
5.?用ChartDirector在JSP中畫統(tǒng)計(jì)圖(5251)
評論排行榜
1.?如何在Struts中實(shí)現(xiàn)分頁顯示數(shù)據(jù)(2)(25)
2.?獻(xiàn)出一份愛心 共同援助重病程序員王俊(22)
3.?Struts的國際化完整解決方案(11)
4.?2005年6月27日,一個值得紀(jì)念的日子(9)
5.?《深入淺出Hibernate》讀書筆記(1)——實(shí)體對象生命周期(9)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 小米
主站蜘蛛池模板:
石林
|
高邑县
|
武隆县
|
凉山
|
大同市
|
东丽区
|
贵港市
|
马鞍山市
|
康马县
|
北票市
|
定安县
|
平南县
|
巫溪县
|
汉寿县
|
邵阳县
|
楚雄市
|
耿马
|
元朗区
|
四子王旗
|
蒙城县
|
奉化市
|
香港
|
西盟
|
固阳县
|
吴堡县
|
高密市
|
保德县
|
麟游县
|
闽清县
|
榆林市
|
嘉禾县
|
江城
|
濮阳县
|
阿坝
|
修武县
|
黎平县
|
泰来县
|
潢川县
|
鹤庆县
|
靖宇县
|
武鸣县
|