Socket编程中怎么中断I/O流引起的阻塞呢
例如while ((str = br.readLine()) != null) {System.out.println(str); }中由于readLine方法阻塞了
[b][color=red]
不好意思 更正先前的回答。[/color][/b]
[quote]
while ((str = br.readLine()) != null) {System.out.println(str); }中由于readLine方法阻塞了 [/quote]
[b]readLine阻塞,因为 发送方没有发送一个明确的换行符。[/b]
[color=blue][b]
Socket中的IO流,使用readLine要特别注意:
没有换行符会一直堵塞,除非 对方的Socket连接关闭。
注意,在Socket中的IO流,使用readLine,除非 对方的Socket连接关闭,否则永远不返回null;
普通的IO流是,读到末尾才返回null。
这里要理解 Socket流的末尾是 对方的Socket连接关闭[/b][/color]
呵呵 我经常在问答上逛。
我记不得了Socket这块了,用readLine 很容易阻塞。你可以试下,发送换行符后,调用下flush。
或者更专业点,定义下报文的结构:
比如:
前4个byte是长度,然后根据长度,读取指定的字节,就可以了。