重新启动后无法使用套接字

时间:2014-03-30 15:19:03

标签: java sockets inputstream bufferedreader outputstream

我使用普通的Java套接字编程创建了一个新的客户端 - 服务器连接:

private static BufferedReader input;
private static DataOutputStream output;
private static Socket socket;
public void connect() {
    try {
        socket = new Socket(address, port);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

我发送和接收的方式如下:

发送:

output = new DataOutputStream(socket.getOutputStream());
output.writeBytes(data);

接收:

    InputStream stream = null;
    try{
        stream = socket.getInputStream();
    }catch(Exception e){
        e.printStackTrace();
    }
    if(stream != null){
        input = new BufferedReader(new InputStreamReader(
                stream));

    // some input processing
    }

问题是当连接被中断时我必须在app运行时再次重新启动它,所以我创建了一个线程以便重新执行connect()方法,并且它有效地执行任何异常,但是inputoutput变量无法发送或接收任何数据。

2 个答案:

答案 0 :(得分:0)

听起来您正在重新连接套接字而不重新创建输入和输出流。

在运行connect()之后尝试运行重新创建输入和输出流:

output = new DataOutputStream(socket.getOutputStream());
stream = socket.getInputStream();

答案 1 :(得分:0)

你可以尝试最后清理输入和输出流,也可以关闭套接字......

finally { socket.close(); }