TCP/IP知識總結面試題之Socket服務

1、如何新建一個客戶端Socket服務

//new出一個對象即可
//指定鏈接的IP地址,端口號
Socket socket =new Socket("www.baidu.com",1000);

2、寫出Socket連接服務器與服務器進行交互的代碼

//新建Socket服務,將數據發送給服務端
Socket socket =new Socket("www.baidu.com",1000);
//得到寫入流
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
//寫入數據
bw.write("i love you");
bw.newLine();
bw.close();
//從服務端讀取數據
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream));
String line =null;
StringBuilder sb=new StringBuilder();
while(line=((br.readLine())!=null)
{
    sb.append(line);
}
System.out.println(sb.toString());

3、什麼時候會關閉Socket服務
有4種情況會關閉,分爲手動或者系統。
手動的方式:
1、socket.close();
2、InputStream.close();
系統:
1、程序退出
2、新的Socket請求覆蓋
總結,一般而言,手動的話容易造成網絡被佔用,因爲需要一段時間的緩衝,不然會佔用大量的網絡資源
4、如何使用Socket.connect();的方法連接服務器

Socket socket=new Socket();
socket.connetct(new InetSocketAddress("www.baidu.com",1000));

5、網絡的超時
我們要知道,我們客戶端與服務端的連接的異常會出現在兩個方面,第一個是發送請求,一個是接收服務端傳送回來的信息
那麼網絡延時也是發生在這個時候,第一個是請求超時,第二是獲取數據超時,爲了提供用戶的體驗,我們可以設置在發送請求的時候設置超時時間,方法是setSOTimeout(time);
ps:SO是Socket的縮寫
6、在之前我們說socket關閉釋放網絡資源的時候,我們說可以使用close方法,但是如果在關閉的時候,我們的信息還沒發完整,這個時候我們應該設置一個比較長的時間,連接到服務器,然後將信息提交的時候,設置長時間,比如一分鐘。
7、如何新建一個ServiceSocket服務

ServiceSocket servicesocket =new SocketSocket(1000);
//指定請求隊列長度
ServiceSocket servicesocket =new SocketSocket(1000100);

8、什麼是請求隊列
一個服務端接收來自客戶端的請求,可能有多個服務端的請求,這個時候服務端會將請求放進隊列,(隊列是先進先出的原則),每一個客戶端的請求都有相應的新的線程去處理,當服務端開啓accept的時候,就開始處理,但是當客戶端請求過多,超出隊列長度的時候,就會拋異常

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章