北國狼人的部落格
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.(14352)
2.?mysql_install_db --defaults-file=/etc/my.cnf --user=mysql(8189)
3.?IWAB0014E Unexpected exception occured 該死的問題,就是因為Eclipse + WTP 需要先配置Server,再生成webservice(6957)
4.?理解Java ClassLoader機制 |用Java說話,人氣戰勝時間!Come On(6493)
5.?J2ME 網絡連接(HTTP) 模擬器 WTK(4982)
評論排行榜
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成人无码
|
又黄又大的激情视频在线观看免费视频社区在线
|
免费观看美女用震蛋喷水的视频
|
久久亚洲一区二区
|
日本免费在线观看
|
亚洲一区影音先锋色资源
|
99国产精品视频免费观看
|
78成人精品电影在线播放日韩精品电影一区亚洲
|
青柠影视在线观看免费
|
久久综合九九亚洲一区
|
亚洲视频在线免费看
|
7777久久亚洲中文字幕
|
成人片黄网站色大片免费
|
久久亚洲精品无码av
|
亚洲国产人成中文幕一级二级
|
亚洲免费日韩无码系列
|
亚洲国产精品无码成人片久久
|
免费国产黄网站在线观看可以下载
|
亚洲色偷偷av男人的天堂
|
在线播放免费播放av片
|
亚洲欧洲日本在线观看
|
免费国产人做人视频在线观看
|
午夜免费国产体验区免费的
|
中文字幕精品亚洲无线码一区
|
日本亚洲欧洲免费天堂午夜看片女人员
|
亚洲第一精品在线视频
|
免费看国产精品3a黄的视频
|
国产亚洲精品2021自在线
|
在线a亚洲v天堂网2019无码
|
最近新韩国日本免费观看
|
最新亚洲精品国偷自产在线
|
久久伊人久久亚洲综合
|
黄在线观看www免费看
|
国产精品亚洲综合
|
国产亚洲综合久久系列
|
好吊妞在线新免费视频
|
一级做a爱片特黄在线观看免费看 一级做a爱过程免费视
|
在线播放国产不卡免费视频
|
无码专区—VA亚洲V天堂
|
午夜爱爱免费视频
|