socket---tcp初始化配置


 

 

 

 

 

 

 

 

 

 1、創建socket,這樣的構造函數有很多,但常用的就是創建一個無參的構造的實例,這樣可以連接server之前進行一些設置;而帶參的有好幾個都是實例化同時就connect了,所以用無參;接下來創建無參然后bind,如果不板頂端口,客戶端會隨機分配一個端口

用bind:可以設置一個連接超時時間

 

 

 

2、 接下來初始化設置socket

 

 

 

  socket.setSOtimeout()是設置socket阻塞時間:connect()or accept() 方法有連接阻塞超時時間設置了,所以這里就是read阻塞超時時間設置,超時異常叫做socketTimeoutException ,服務端都有這個超時異常設置

下面在執行

String echo = socketBufferedReader.readLine();
代碼超時,這個代碼是客戶端read取服務端返回的響應數據,由於遲遲沒有得到服務端響應就超時了。

 

 

 

 

下面的這個異常是端口被占用,或者serverSocket未啟動服務或 server端ipping不通    --------這個不是超時時間的設置,這個超時時間在connect方法的參數設置。

 

 下面是偵聽客戶端請求連接超時

 

socket.setReuseAddress() socket連接遠程,連接關閉之后一般是在2分鍾內不准再次使用端口,這個設置就可以直接使用了

socket.setSoLinger 如果是false,socket關閉后,會將緩沖區數據輸出,而true,直接拋棄緩沖區數據

 

3、服務端設置:

 

 

 

 這個backlog是等待最大連接數,bind操作后就已經啟動serverSocket,接下來serverSocket要創建一個個socket分配各個連接到客戶端。如果這時有50個客戶端等待連接serverSocket,是可以的,如果51個,那么51個客戶端就報異常。  

先創建一個空的serverSocket,然后設置,再bind,因為bind后就啟動了,這時再設置就無效了,所以bind不能放在createServetSocket中

ServerSocket serverSocket = createServerSocket();
initServerSocket(serverSocket);
serverSocket.bind(new InetSocketAddress(port),50);



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM