<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      Java Socket編程(3)-1

      [摘要]服務器Sockets服務器并不是主動地建立連接.相反地,他們是被動地監聽一個客戶端的連接請示然后給他們服務.服務器是由類ServerSocket來建立的.下面的程序建立了一個服務器端socket并把...
      服務器Sockets

      服務器并不是主動地建立連接.相反地,他們是被動地監聽一個客戶端的連接請示然后給他們服務.服務器是由類ServerSocket來建立的.下面的程序建立了一個服務器端socket并把它綁定到80端口:

      ServerSocket serverSocket = new ServerSocket(80, 5);

      第一個參數是服務器要監聽的端口.第二個參數是可選的.API文檔中說明了這是一個監聽時間,但是在傳統的socket程序中第二個參數是監聽深度.一個服務器可以同時接收多個連接請求,但是每次只能處理一個.監聽堆是一個無回答的連接請求隊列.上面的請求建立一個連接來處理最后五個請求.如果省略了后面的一個參數,則默認值是50.

      ServerSocket serverSocket = new ServerSocket(80, 5);

      一旦socket建立了并開始監聽連接,進來的連接將會建立并放在監聽堆.accetp()方法把在堆中的連接取出來.

      Socket clientSocket = serverSocket.accept();

      這個方法返回一個用來與來訪者對話的客戶端連接.服務器本身不可能建立對話,相反地,服務器socket會使用accept()方法來產生一個新的socket.服務器socket依舊打開并排列新的連接請求.

      與客戶端socket一樣,下面的一步建立輸入和輸出流:

      DataInputStream inbound = new DataInputStream( clientSocket.getInputStream() ); DataOutputStream outbound = new DataOutputStream( clientSocket.getOutputStream() );

      一般的I/O操作可以在新建的流中運用.在服務器回應前它等待客戶端發送一個空白的行.當會話結束時,服務器關閉流和客戶端socket.如果在隊列中沒有請示將會出現什么情況呢?那個方法將會等待一個的到來.這個行為叫阻塞.accept()方法將會阻塞服務器線程直到一個呼叫到來.當5個連接處理完閉之后,服務器退出.任何的在隊列中的呼叫將會被取消.

      所有的服務器都要有以下的基本的步驟:

      1.建立一個服務器socket并開始監聽.

      2.使用accept()方法取得新的連接.

      3.建立輸入和輸出流.

      4.在已有的協議上產生會話.

      5.關閉客戶端流和socket.

      6.回到第二步或者到第七步.

      7.關閉服務器socket.



      日韩精品一区二区三区高清