新手的一个问题

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是长度,然后根据长度,读取指定的字节,就可以了。