检查Java Socket中的传入数据

时间:2012-01-13 19:11:03

标签: java sockets

我正在用Java编写一个简单的聊天,我想检查是否有一些数据等待BufferedReader。我读过关于NIO的文章,但我并没有完全理解它。以下是我的一些代码:

public void Send(String data)
{
    out.println(data);
}

public String Recv()
{
    if (dataIncomming)
    {
        try {
            return in.readLine();
        } catch (IOException e) {
            System.err.println("Send: Error on BufferedReader.readLine() - IOException");
        }
    }
    else return "";
}

我不知道填写dataIncomming ...

的内容

2 个答案:

答案 0 :(得分:8)

使用Stream.Available()方法。您可能还想等到收到正确数量的字节并等待,以便线程不会100%运行。

while(Stream.Available() != 0); //block until there is data

try{  
    return in.readLine();  
} catch (IOException e) {  
    System.err.println("Send: Error on BufferedReader.readLine() - IOException");  
} 

答案 1 :(得分:0)

您可以使用InputStream.available()方法来检查套接字输入流上当前已到达多少字节。

public String Recv()
{
    if (in.available() > 0)
    {
        try {
            return in.readLine();
        } catch (IOException e) {
            System.err.println("Send: Error on BufferedReader.readLine() - IOException");
        }
    }
    else return "";
}