用socket进行C/S交互的时候 有个问题 ,客户端在发送信息后  然后socket被shutdown了 如果我后面想再给服务器发送消息的话 该怎么解决,因为前面socket被shutdown 那么这个socket有没有其他的方法再打开,我试过重新再new一个socket 虽然效果是实现了 但是我觉得不应该这么做 有没有什么方法 可以达到和shutdown一样释放缓存的效果 但是又不至于使他关闭。服务器端
package cn.bdqn.collection;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class SocketDomo {
public static void main(String[] args) {
try {
ServerSocket seso = new ServerSocket(3000);
Socket so= seso.accept();
System.out.println(so);
InputStream ist=so.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(ist));
String read;
while((read=br.readLine())!=null){
System.out.println(read);
}
//搭建从内存到输出端的流通道
OutputStream os = so.getOutputStream();
//返回客户端一会回应
byte[] by = "登录成功".getBytes();
os.write(by, 0, by.length);
so.shutdownOutput();
//os.flush();
//释放内存
//seso.close();
// ist.close();
// br.close();
// os.close();
so.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
客户端package cn.bdqn.collection;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;public class SocketD {
public static void main(String[] args) {
try {
Socket st = new Socket("localhost",3000);
String str = new String("abcd1234");
OutputStream os = st.getOutputStream();
byte[] by = str.getBytes();
os.write(by,0,by.length);

//os.flush();
st.shutdownOutput();
//接受来自服务器的回复
InputStream is = st.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String strr;
while((strr = br.readLine())!=null){
System.out.println(strr);
}
st.close();
os.close();
is.close();
br.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}
}这里给出的代码是一次交互的,我的问题在如果想要实现多次交互 ,那就不能shutdown ,但是不shutdown 服务器又不能正常接收到客户端的信息