我使用普通的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()
方法,并且它有效地执行任何异常,但是input
和output
变量无法发送或接收任何数据。
答案 0 :(得分:0)
听起来您正在重新连接套接字而不重新创建输入和输出流。
在运行connect()之后尝试运行重新创建输入和输出流:
output = new DataOutputStream(socket.getOutputStream());
stream = socket.getInputStream();
答案 1 :(得分:0)
你可以尝试最后清理输入和输出流,也可以关闭套接字......
finally { socket.close(); }