我使用普通的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
}
问题是当连接中断时,我必须在应用程序运行时再次重新启动它,所以我创建了一个线程以重新执行 connect()
方法,并且它有效地执行而没有任何异常,但随后,input
和output
变量无法发送或接收任何数据。
听起来您正在重新连接套接字,而没有重新创建输入和输出流。
尝试在运行 connect() 后运行重新创建输入和输出流,如下所示:
output = new DataOutputStream(socket.getOutputStream());
stream = socket.getInputStream();
您可以尝试最后清理输入和输出流并关闭套接字...
finally { socket.close(); }