求看看这段socket 代码为什么执行不下去了,谢谢

李狗蛋52635 2012-04-17 02:23:49
各位好

以下是一段socket只用来接收的代码,我用debug调试,在accept()后,执行到标记处就执行不下去了,这是为什么呢?


// receiver class
class ServerListener extends Thread{

Socket serverSocket = null;

@Override
public void run() {
while(true){
try {
Log.w(TAG_LISTENER, "ServerListener run() {");
serverSocket = mSocket.accept();

BufferedInputStream in = new BufferedInputStream(serverSocket.getInputStream());

byte[] reader = new byte[10];
int count = 0;
boolean flag = false;
while((count = in.read(reader))>0){ <--- 执行不下去了
flag = true;
bq.enQueue(reader[0]);
Log.w(TAG_LISTENER, reader.toString() + " is added to byteQueue");
}
Log.w(TAG_LISTENER, "***** ServerSender start");

if(flag){
new ServerSender(serverSocket).start();
flag = false;
}
} catch (IOException e) {
e.printStackTrace();
}
Log.w(TAG_LISTENER, "}");
}
}
}


先谢谢了。
...全文
57 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
李狗蛋52635 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

in.read(reader) 是堵塞性方法,楼主可以找一下这方面的资料看一下。
[/Quote]
说来也甚是奇怪,有时候用得就好好的。。。

网上查了下,可以用in.available()来判断可读数,再进行读取,谢了。
sdojqy1122 2012-04-17
  • 打赏
  • 举报
回复
in.read(reader) 是堵塞性方法,楼主可以找一下这方面的资料看一下。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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