一个善于Socket的问题

qidong 2003-10-15 04:32:47
InputStream in = socket.getInputStream();
byte[] buff = new byte[128];
int index ;
while(ture){
index = in.read(buff);
if(index > -1){
String s = new String(buff, 0, index);
if(s.equals("exit")) break;
System.out.println(s);
}
}

我想我的这段程序应该在
index = in.read(buff);
一行产生堵塞,直到有一个消息发过来,程序才继续运行,可事实不是,程序一直在运行,CPU是100%,
我该怎么办?
各位高手,帮个
...全文
36 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
machozhao 2003-10-17
  • 打赏
  • 举报
回复
你的程序好像思路不对!
SocketServer和Socket是不同的,SocketServer才能工作在等待状态!
我猜测你的程序应该是“当其他的Client发送Exit时”,退出系统!
如果是这样,你应该用
ServerSocket listener = ServerSocket(...)
while (true) {
Socket client = listner.accept()
InputStream in = client .getInputStream();
byte[] buff = new byte[128];
int index ;
while(ture){
index = in.read(buff);
if(index > -1){
String s = new String(buff, 0, index);
if(s.equals("exit")) break;
System.out.println(s);
}
}
}

然后你要让这段程序运行在一个Thread中!!!
廖雪峰 2003-10-15
  • 打赏
  • 举报
回复
不是这个线程引起的cpu 100%

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧