java中客户端用socket连接上服务端之后一直没有断开,不定时给服务端发送数据,服务器端如何知道? 5

java中客户端用socket连接上服务端之后一直没有断开,不定时给服务端发送数据,服务端如何实现在客户端发送数据的时候就能知道呢?并能立即取得这些数据呢?... java中客户端用socket连接上服务端之后一直没有断开,不定时给服务端发送数据,服务端如何实现在客户端发送数据的时候就能知道呢?并能立即取得这些数据呢? 展开
 我来答
time飞啊飞的
2013-12-11 · 超过32用户采纳过TA的回答
知道答主
回答量:79
采纳率:0%
帮助的人:63.5万
展开全部
如果是一对一的话,不要用到线程,相当于一个1对1的聊天。主要是这,你看下

try{t.setText("服务端开启,等待客户端连接");
ss=new ServerSocket(50000);

}catch(IOException e){
System.err.println("无法在50000端口建立监听服务");
System.exit(1);
}

try{ s=ss.accept();
fstart=true;
t.append("\n和来自"+s.getInetAddress()+"客户端连接成功!\n");
t.append("\n你现在可以通信了");
dis=new DataInputStream(s.getInputStream());
kehu[1]=dis.readUTF();
}catch(IOException e){
System.err.println("和客户端建立服务失败");
System.exit(1);
}

try{

while(true){
dis=new DataInputStream(s.getInputStream());
dos=new DataOutputStream(s.getOutputStream());
t.append("\n客户端1:"+dis.readUTF());

}

}catch(IOException e){

}

}
匿名用户
2013-12-10
展开全部
单独的读线程,有数据即时读出来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
晨方0329
推荐于2018-04-12
知道答主
回答量:16
采纳率:0%
帮助的人:2.2万
展开全部
public void start() throws IOException{
ServerSocket ss = new ServerSocket(9000);
while(true){
Socket s = ss.accept();
}
}

要用到线程的东西
追问
我服务器端就是这么写的,现在客户端一直连着我的服务器,并且不定时给服务器发送数据,但是我服务器如何能知道他又给我发送数据了呢?用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();
}
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式