在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。