// 有參構造函數建立的socket會訪問網絡,無參的則不會
//Socket socket=new Socket("www.baidu.com",80); 網絡
// 當本地端口爲0則代表由系統隨機分配端口
//Socket socket=new Socket("www.baidu.com",80,InetAddress.getByName("localhost"),0);socket
Socket socket = new Socket();
//經過connect方法還能指定鏈接的超時時間,socket的設置最好在connect方法以前調用相關方法
socket.connect(new InetSocketAddress(InetAddress.getByName("www.baidu.com"), 80),5000);函數
try {
if(socket!=null){
//socket關閉的時候因爲客戶端可能先關閉因此會異常,這時不用處理異常
socket.close();
}
} catch (Exception e) {
}spa
//socket即便關閉也能獲取相關的信息
System.out.println(socket.getInetAddress());對象
//判斷sokcet是否有鏈接過遠程機器
System.out.println(socket.isConnected());
//判斷socket是否關閉,socket沒有鏈接過也返回false
System.out.println(socket.isClosed());
//正確判斷socket是否打開
System.out.println(socket.isConnected() && !socket.isClosed()); get
//判斷socket是否有綁定過本地端口
System.out.println(socket.isBound());io
//獲取輸入和輸出流,可獲取遠程的數據和給遠程發送數據,當它們任何一個關閉,socket也會關閉
socket.getInputStream();
socket.getOutputStream();sed
//socket關閉的時候,輸入和輸出流都會自動關閉,下面的方法只關閉相關的流
socket.shutdownInput();
socket.shutdownOutput();構造函數
//設置讀取數據超時時間,單位ms
socket.setSoTimeout(1000);方法
//能夠在socket關閉後對象回收後再獲取重複利用 SocketAddress address=new InetSocketAddress("www.baidu.com",80);