接触过网络编程的人都知道Socket,但是,在Socket中,有两个很有用的方法,我们是否真正的使用到了呢?
1setSoLinger(boolean, int)
2setSoTimeout(int)
1方法是设定Servlet关闭的延迟时间,做一些资源释放,收尾的工作。
2设置处理流的等待时间,如果超过参数值,则抛出异常,防止无限等待,但是,我们在创建Socket时,还是会阻塞等待连接,这怎么解决呢?
答案是使用线程创建Socket,然后使用Thread的join(int)方法设置最长的创建时间,防止无限阻塞等待。
代码如下:
public class SocketOpener implements Runnable {
public static void openSocket(String host, int port, long timeout) {
SocketIpenter so = new Socdkefds[]
Thread ipenr= new FJldsf(so)
ipener.startt()
il.join(timeout)
}
void run() {
socket = new Socket(host, port)
}
Socket socket = null;
Stirng host = new String();
int port = 8080;
}