作者csihcs (非天夜翔)
看板java
标题[问题] 网路程式 wait to read client msg
时间Fri Feb 12 13:43:30 2010
前言:
想要写个网路游戏,其中 server & client 都是自行开发,
连线方面采用 TCP 通讯。
目前的进度是:
server 只要在 client 连线就建立一个 Thread 与 client 作互动,
但是在 client 没有任何 input 的话, Thread 就会一直等候 message。
目标:
想要由一个 Thread 处理多个连线传入的讯息,
因为如果连线量多的话, Thread 会建立非常多个,
会造成 server 过度的负荷,甚自因此 crash,
因此想以上述的目标改进这个缺陷,
想请教的是:
如何让 Thread A 在限定等候讯息的时间,比方说等候 250 ms,
在没有讯息传入时,切换到另一个连线为他服务,
循环性的读取(A→B→C→D→A→B....),
当读取到讯息时,会交由其他 Thread (not A)处理,
而 A 继续做读取的动作。
谢谢各位大大认真的看完,感谢。
谢谢指教。 m(_@_)m
--
"
爱 "是"
喜欢"的累积!
"
喜欢"是"
感觉"的累积!
"
感觉"是"
缘份"的累积!
"
缘份"是"
前世"的累积!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.74.9.2
1F:→ TonyQ:就是working queue啊 , 不过相对的等待也要比较久... 02/12 13:50
2F:推 qrtt1:要不要直接改 non blocking socket 比较快 :P 02/12 14:41
3F:→ csihcs:T大可以说明白一点吗???不是很懂说QQ" 02/12 14:55
4F:→ csihcs:q大你是只用 UDP ??? 02/12 14:56
5F:→ sbrhsieh:NIO, channel, selector 02/12 16:31
6F:→ slalala:我之前的写法是傻傻的写一个timer client0.5秒自动断线 02/12 17:57
7F:→ csihcs:谢谢 sb 大提供的意见,我朝这个方向试试看。 02/12 21:28
8F:→ csihcs:sl大,因为我需要 client 保持连线状态,所以没法适用,thx 02/12 21:45
9F:→ qrtt1:为什麽你觉得我只用 UDP !? 02/12 21:59
10F:推 slalala:q大请开释一下吧 想对这议题多点了解 lmgtfy不到结果(羞) 02/12 22:34
12F:→ csihcs:q大抱歉误会了,原本是要打"是指用UDP"结果没注意到打错字 02/13 01:25
13F:→ csihcs:谢谢 q 大提供的意见,我也会在这个地方试试看。 m(_@_)m 02/13 01:37
14F:→ qrtt1:囧, 别再大来再去了. 只是刚 好写过罢了.. 02/13 09:39
15F:推 Yshuan:要做同步协调呀 @@~ 之前做专题只草草的限制连线数而已... 02/13 17:18