问题1:如何解决socket中如何处理DatainputStream的read方法读取堵塞?如果没有长时间数据进来如何让线程运行结束呢?大家看下代码哦,然后说下如何处理呢?
代码如下:
Socket 的 setSoTimeout() 方法必须在接收数据之前执行才有效. 此外, 当输入流的 read()方法抛出 SocketTimeoutException 后, Socket 仍然是连接的, 可以尝试再次读数据:
socket.setSoTimeout(180000);
byte[] buff = new byte[1024];
InputStream in = socket.getInputStream();
int len = -1;
do{
try{
len = in.read(buff);
//处理读到的数据
//.........
}catch(SocketTimeoutException e){
//e.printStackTrace();
System.out.println("等待读超时!");
len = 0;
}
}while(len != -1);
回答:你可以了解一下异步通信的NIO框架,如MINA,NETTY
问题2:类型 String 中的方法 format(String, Object[])对于参数(String, Date)不适用,怎么办呢?
具体是这样子:
package zjk;
import java.util.Date;
public class GetTime {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Date date=new Date();
System.out.println("默认时间格式:"+date);
System.out.println("两位24小时制的小时:"+ String.format("%tH",date));
}
}
回答:
java中一般使用如下方式进行时间的格式化输出:
java.text.SimpleDateFormat df=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("两位24小时制的小时:"+ df.format(date));
代码如下:
Socket 的 setSoTimeout() 方法必须在接收数据之前执行才有效. 此外, 当输入流的 read()方法抛出 SocketTimeoutException 后, Socket 仍然是连接的, 可以尝试再次读数据:
socket.setSoTimeout(180000);
byte[] buff = new byte[1024];
InputStream in = socket.getInputStream();
int len = -1;
do{
try{
len = in.read(buff);
//处理读到的数据
//.........
}catch(SocketTimeoutException e){
//e.printStackTrace();
System.out.println("等待读超时!");
len = 0;
}
}while(len != -1);
回答:你可以了解一下异步通信的NIO框架,如MINA,NETTY
问题2:类型 String 中的方法 format(String, Object[])对于参数(String, Date)不适用,怎么办呢?
具体是这样子:
package zjk;
import java.util.Date;
public class GetTime {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Date date=new Date();
System.out.println("默认时间格式:"+date);
System.out.println("两位24小时制的小时:"+ String.format("%tH",date));
}
}
回答:
java中一般使用如下方式进行时间的格式化输出:
java.text.SimpleDateFormat df=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("两位24小时制的小时:"+ df.format(date));