java中客户端用socket连接上服务端之后一直没有断开,不定时给服务端发送数据,服务端如何实现在客户端发送数据的时候就能知道呢?并能立即取得这些数据呢?
我服务器端就是这么写的,现在客户端一直连着我的服务器,并且不定时给服务器发送数据,但是我服务器如何能知道他又给我发送数据了呢?用socket只有在客户端刚访问服务器端的时候能监听到,之后就监听不到了
追答public void start() throws IOException{
ServerSocket ss = new ServerSocket(9000);
while(true){
Socket s = ss.accept();
new Agent(s).start();
}
}
class Agent extends Thread{
Socket s;
public Agent(Socket s) {
this.s = s;
}
public void run() {
try{
InputStream in = s.getInputStream();
OutputStream out = s.getOutputStream();
//向客户端发送, 先发生协议返回行,文本行
IOUtils.println(out, "text,1");//协议头
//发送消息内容, 一行文本消息
IOUtils.println(out, "欢迎使用FTP演示服务器!");
while(true){
//读取客户端发送到命令
String cmd = IOUtils.readLine(in).trim();
if("pwd".equals(cmd)){//显示当前目录
pwd(out);
}else if("ls".equals(cmd)){
ls(out);
}else if(cmd.startsWith("get ")){
get(cmd, out);
}else if("bye".equalsIgnoreCase(cmd)){
IOUtils.println(out, "text,1");
IOUtils.println(out, "Bye, Bye!");
s.close();
}else{
IOUtils.println(out, "text,1");
IOUtils.println(out, "只支持pwd,ls,get,bye!");
}
}
}catch(IOException e){
e.printStackTrace();
}
}
}