1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關咨詢
      選擇下列產品馬上在線溝通
      服務時間:8:30-17:00
      你可能遇到了下面的問題
      關閉右側工具欄

      新聞中心

      這里有您想知道的互聯(lián)網營銷解決方案
      Java網絡編程基礎(四)ServerSocket類使用

      由于SSClient使用了流套接字,所以服務程序也要使用流套接字。

      創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網綜合服務,包含不限于成都網站設計、網站制作、蒙城網絡推廣、小程序開發(fā)、蒙城網絡營銷、蒙城企業(yè)策劃、蒙城品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供蒙城建站搭建服務,24小時服務熱線:18982081108,官方網址:www.cdcxhl.com

      這就要創(chuàng)建一個ServerSocket對象,ServerSocket有幾個構造函數,最簡單的是ServerSocket(int port),當使用ServerSocket(int port)創(chuàng)建一個ServerSocket對象,port參數傳遞端口號,這個端口就是服務器監(jiān)聽連接請求的端口,如果在這時出現錯誤將拋出IOException異常對象,否則將創(chuàng)建ServerSocket對象并開始準備接收連接請求。

      接下來服務程序進入無限循環(huán)之中,無限循環(huán)從調用ServerSocket的accept()方法開始,在調用開始后accept()方法將導致調用線程阻塞直到連接建立。在建立連接后accept()返回一個最近創(chuàng)建的Socket對象,該Socket對象綁定了客戶程序的IP地址或端口號。

      由于存在單個服務程序與多個客戶程序通訊的可能,所以服務程序響應客戶程序不應該花很多時間,否則客戶程序在得到服務前有可能花很多時間來等待通訊的建立,然而服務程序和客戶程序的會話有可能是很長的(這與電話類似),因此為加快對客戶程序連接請求的響應,典型的方法是服務器主機運行一個后臺線程,這個后臺線程處理服務程序和客戶程序的通訊。

      為了示范我們在上面談到的慨念并完成SSClient程序,下面我們創(chuàng)建一個SSServer程序,程序將創(chuàng)建一個ServerSocket對象來監(jiān)聽端口10000的連接請求,如果成功服務程序將等待連接輸入,開始一個線程處理連接,并響應來自客戶程序的命令。下面就是這段程序的代碼:

      Listing 3: SSServer.java

      // SSServer.java

      import java.io.*;
      import java.net.*;
      import java.util.*;

      class SSServer
      {
      public static void main (String [] args) throws IOException
      {
      System.out.println ("Server starting...\n");

      // Create a server socket that listens for incoming connection
      // requests on port 10000.

      ServerSocket server = new ServerSocket (10000);

      while (true)
      {
      // Listen for incoming connection requests from client
      // programs, establish a connection, and return a Socket
      // object that redivsents this connection.

      Socket s = server.accept ();

      System.out.println ("Accepting Connection...\n");

      // Start a thread to handle the connection.

      new ServerThread (s).start ();
      }
      }
      }

      class ServerThread extends Thread
      {
      private Socket s;

      ServerThread (Socket s)
      {
      this.s = s;
      }

      public void run ()
      {
      BufferedReader br = null;
      PrintWriter pw = null;

      try
      {
      // Create an input stream reader that chains to the socket's
      // byte-oriented input stream. The input stream reader
      // converts bytes read from the socket to characters. The
      // conversion is based on the platform's default character
      // set.

      InputStreamReader isr;
      isr = new InputStreamReader (s.getInputStream ());

      // Create a buffered reader that chains to the input stream
      // reader. The buffered reader supplies a convenient method
      // for reading entire lines of text.

      br = new BufferedReader (isr);

      // Create a print writer that chains to the socket's byte-
      // oriented output stream. The print writer creates an
      // intermediate output stream writer that converts
      // characters sent to the socket to bytes. The conversion
      // is based on the platform's default character set.

      pw = new PrintWriter (s.getOutputStream (), true);

      // Create a calendar that makes it possible to obtain date
      // and time information.

      Calendar c = Calendar.getInstance ();

      // Because the client program may send multiple commands, a
      // loop is required. Keep looping until the client either
      // explicitly requests termination by sending a command
      // beginning with letters BYE or implicitly requests
      // termination by closing its output stream.

      do
      {
      // Obtain the client program's next command.

      String cmd = br.readLine ();

      // Exit if client program has closed its output stream.

      if (cmd == null)
      break;

      // Convert command to uppercase, for ease of comparison.

      cmd = cmd.toUpperCase ();

      // If client program sends BYE command, terminate.

      if (cmd.startsWith ("BYE"))
      break;

      // If client program sends DATE or TIME command, return
      // current date/time to the client program.

      if (cmd.startsWith ("DATE") || cmd.startsWith ("TIME"))
      pw.println (c.getTime ().toString ());

      // If client program sends DOM (Day Of Month) command,
      // return current day of month to the client program.

      if (cmd.startsWith ("DOM"))
      pw.println ("" + c.get (Calendar.DAY_OF_MONTH));

      // If client program sends DOW (Day Of Week) command


      名稱欄目:Java網絡編程基礎(四)ServerSocket類使用
      分享地址:http://ef60e0e.cn/article/edoseo.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        和林格尔县| 泰宁县| 张家川| 乌什县| 永胜县| 惠安县| 隆林| 桃园市| 邵阳市| 四子王旗| 新干县| 会理县| 汉源县| 霍山县| 肥城市| 山阴县| 元江| 营山县| 锡林浩特市| 巴林右旗| 远安县| 肃宁县| 平舆县| 太白县| 江西省| 田东县| 镇赉县| 黔南| 长宁县| 丹凤县| 九江市| 奉新县| 合江县| 鄂托克前旗| 灌阳县| 博客| 随州市| 宁城县| 雅江县| 通江县| 平南县|