首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2ME开发 >

socket 等待读取内容的时候,怎么断开

2012-01-05 
socket 等待读取内容的时候,如何断开在j2me中利用socket通讯,读取信息的代码在run中public void run(){try

socket 等待读取内容的时候,如何断开
在j2me中利用socket通讯,读取信息的代码在run中
public void run()
{
  try
  {
  sc = (SocketConnection)Connector.open("socket://192.168.1.14:90001");
  sc.setSocketOption(SocketConnection.LINGER,5);
  is = sc.openInputStream();
  byte[] bRecv1;
  byte[] bRecv2;
  while(true)
  {
  bRecv1 = new byte[1];
  if(is.read(bRecv1) == -1)
  break;
  int c = 0;
  c = is.available();
  if(c >0)
  {
  bRecv2 = new byte[c];
  is.read(bRecv2);
  boolean bStop = true;
  System.out.println(c);
  }
  }
 }
在上面代码中一直循环等待接受消息,无法断开,我想断开,应该如何操作?

[解决办法]
具体不知道你要干什么,结构看起来有点乱...
也不一定是循环出不来,可能是网络没数据,socket的read是线程阻塞的
[解决办法]
Thread.interrupte(); 强制break;
不知道楼主是不是要的这个。


[解决办法]
socket.setSoTimeOut(10000);// 10秒没数据,抛异常 SocketTimeoutException

[解决办法]
肯定是阻塞在
is.read(bRecv1) == -1
这了
最后一次循环 不能保证read到数据
所以阻塞了
试试这样是否满足你的需求
int count = 0;
int ch = 0;
while (count == 0)
{
count = in.available();
}
bRecv2 = new byte[count];
ch = in.read(bRecv2); 

[解决办法]
程序会阻塞在
is.read(bRecv1) == -1

楼主直接使用下面的
is.available()部分不就可以了?

读取到需要的内容之后就break。 

热点排行