北國狼人的部落格
BlogJava
首頁
新隨筆
聯系
聚合
管理
隨筆-159 評論-114 文章-7 trackbacks-0
用戶NIO寫服務器,必須多加處理OP_WRITE,不會丟包
服務器往外發數據包,不是光一個socketChannel.write(bb); 就完事了
那是理想狀態。。
用我方法才能保證發出,即使客戶端連接很濫
public
static
long
flushChannel(SocketChannel socketChannel,ByteBuffer bb,
long
writeTimeout)
throws
IOException
{
SelectionKey key
=
null
;
Selector writeSelector
=
null
;
int
attempts
=
0
;
int
bytesProduced
=
0
;
try
{
while
(bb.hasRemaining())
{
int
len
=
socketChannel.write(bb);
attempts
++
;
if
(len
<
0
)
{
throw
new
EOFException();
}
bytesProduced
+=
len;
if
(len
==
0
)
{
if
(writeSelector
==
null
)
{
writeSelector
=
Selector.open();
if
(writeSelector
==
null
)
{
//
Continue using the main one
continue
;
}
}
key
=
socketChannel.register(writeSelector, key.OP_WRITE);
if
(writeSelector.select(writeTimeout)
==
0
)
{
if
(attempts
>
2
)
throw
new
IOException(
"
Client disconnected
"
);
}
else
{
attempts
--
;
}
}
else
{
attempts
=
0
;
}
}
}
finally
{
if
(key
!=
null
)
{
key.cancel();
key
=
null
;
}
if
(writeSelector
!=
null
)
{
//
Cancel the key.
writeSelector.selectNow();
writeSelector.close();
}
}
return
bytesProduced;
}
posted on 2008-11-19 12:08
北國狼人的BloG
閱讀(1446)
評論(1)
編輯
收藏
評論:
#
re: 用戶NIO寫服務器,必須多加處理OP_WRITE,不會丟包
2010-11-09 16:14 |
raymond
好用,頂一個!
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
<
2008年11月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
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
1
2
3
4
5
6
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(33)
給我留言
查看公開留言
查看私人留言
隨筆分類
3D至尊寶(1)
人生各層面經驗積累(15)
關愛IT人士健康(15)
達內學習總結(42)
隨筆檔案
2018年11月 (2)
2012年3月 (1)
2011年8月 (1)
2011年1月 (1)
2010年12月 (2)
2010年8月 (1)
2010年6月 (3)
2010年5月 (3)
2010年4月 (11)
2010年3月 (8)
2010年2月 (4)
2010年1月 (4)
2009年12月 (6)
2009年11月 (1)
2009年10月 (3)
2009年9月 (3)
2009年8月 (3)
2009年6月 (1)
2009年5月 (1)
2009年4月 (1)
2009年1月 (1)
2008年12月 (1)
2008年11月 (3)
2008年10月 (1)
2008年8月 (4)
2008年6月 (2)
2008年5月 (3)
2008年3月 (1)
2008年2月 (1)
2008年1月 (2)
2007年12月 (2)
2007年10月 (3)
2007年9月 (1)
2006年11月 (1)
2006年9月 (1)
2006年8月 (3)
2006年7月 (2)
2006年6月 (1)
2006年5月 (1)
2006年4月 (5)
2006年3月 (7)
2006年2月 (7)
2006年1月 (12)
2005年12月 (8)
2005年11月 (19)
2005年10月 (9)
文章分類
3D至尊寶
Web技術和趨勢(1)
原創(1)
翻譯Java文章(2)
文章檔案
2006年10月 (1)
2005年10月 (3)
Java學習論壇
3D至尊寶
Java最牛網站
搜索
最新評論
1.?re: xsl:value-of select="." 什么意思?[未登錄]
ffff
--ff
2.?re: 理解Java ClassLoader機制 |用Java說話,人氣戰勝時間!Come On
好文章
--godtree
3.?re: 理解Java ClassLoader機制 |用Java說話,人氣戰勝時間!Come On[未登錄]
好文章,收了,謝謝博主
--thinker
4.?re: 高效產生一組不重復的隨機數
要是要求產生的隨機數量特別大怎么辦啊
--ll
5.?re: AS3 位操作比較快
“看完還不明白,就不要搞計算機了。”
就沖著此話,為樓主的優越感深表擔憂
每個人都是從新手過來的,樓主發帖如果是為了分享,我很敬佩,如果是為了和裝13,那我只能笑笑
--調整心態啊樓主
閱讀排行榜
1.?RCP開發,如何解決 org.eclipse.core.runtime.CoreException: Plug-in TD was unable to load class td.app.Application.(14351)
2.?mysql_install_db --defaults-file=/etc/my.cnf --user=mysql(8188)
3.?IWAB0014E Unexpected exception occured 該死的問題,就是因為Eclipse + WTP 需要先配置Server,再生成webservice(6956)
4.?理解Java ClassLoader機制 |用Java說話,人氣戰勝時間!Come On(6492)
5.?J2ME 網絡連接(HTTP) 模擬器 WTK(4981)
評論排行榜
1.?RCP開發,如何解決 org.eclipse.core.runtime.CoreException: Plug-in TD was unable to load class td.app.Application.(9)
2.?給自己的軟件加保險,用java獲取硬盤序列號(8)
3.?不要寫垃圾代碼!!!(8)
4.?反日行動從現在開始,從每個中國人,每個程序員做起!不用日本東西,不給日本人打工!!!(8)
5.?IWAB0014E Unexpected exception occured 該死的問題,就是因為Eclipse + WTP 需要先配置Server,再生成webservice(7)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 北國狼人的BloG
主站蜘蛛池模板:
日本特黄特色免费大片
|
亚洲一区二区三区高清不卡
|
亚洲AV综合色一区二区三区
|
欧洲精品成人免费视频在线观看
|
亚洲国产成人久久一区久久
|
中文字幕无码不卡免费视频
|
亚洲乱码一区av春药高潮
|
亚洲国产精品无码专区在线观看
|
国产福利免费观看
|
免费无码精品黄AV电影
|
99re免费在线视频
|
在线观看免费无码专区
|
国产成人精品免费视频大全
|
亚洲欧美国产日韩av野草社区
|
亚洲经典在线中文字幕
|
亚洲AV乱码一区二区三区林ゆな
|
在线日韩日本国产亚洲
|
www亚洲一级视频com
|
国产精品美女自在线观看免费
|
免费中文熟妇在线影片
|
色片在线免费观看
|
久久久久久曰本AV免费免费
|
无码囯产精品一区二区免费
|
国产精品免费AV片在线观看
|
免费a级毛片无码a∨免费软件
|
a级毛片免费网站
|
一个人免费观看日本www视频
|
一级做性色a爰片久久毛片免费
|
老司机午夜在线视频免费
|
在线亚洲精品视频
|
在线观看亚洲网站
|
美女视频黄频a免费观看
|
美女被免费视频网站
|
中美日韩在线网免费毛片视频
|
日韩毛片一区视频免费
|
二级毛片免费观看全程
|
kk4kk免费视频毛片
|
国产一级a毛一级a看免费视频
|
a色毛片免费视频
|
日韩免费在线视频
|
久久久久久精品免费看SSS
|