<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    魚躍于淵

    First know how, Second know why !
    posts - 0, comments - 1, trackbacks - 0, articles - 49

    Java進階:基于Socket的Java網絡編程集粹

    Posted on 2008-09-20 08:57 魚躍于淵 閱讀(92) 評論(0)  編輯  收藏 所屬分類: 精品網摘

    [摘要] 其實,簡單的分析一下,就可以看出客戶和服務通訊的主要通道就是Socket本身,而服務器通過accept方法就是同意和客戶建立通訊.這樣當客戶建立Socket的同時。服務器也會使用這一根連線來先后通訊,那么既然如此只要我們存在多條連線就可以了。
    [關鍵字]
    Socket 網絡編程
    其實,簡單的分析一下,就可以看出客戶和服務通訊的主要通道就是Socket本身,而服務器通過accept方法就是同意和客戶建立通訊.這樣當客戶建立Socket的同時。服務器也會使用這一根連線來先后通訊,那么既然如此只要我們存在多條連線就可以了。那么我們的程序可以變為如下:
    那么下面的問題是如何使用線程.首先要做的事情是創建線程并使得其可以和網絡連線取得聯系。然后由線程來執行剛才的操作,要創建線程要么直接繼承Thread要么實現Runnable接口,要建立和Socket的聯系只要傳遞引用就可以了.而要執行線程就必須重寫run方法,而run方法所做的事情就是剛才單線程版本main所做的事情,因此我們的程序變成了這樣:

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

    public class MultiUser extends Thread{
      private Socket client;

      public MultiUser(Socket c){
       this.client=c;
      }

      public void run(){
    try{
        BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
        PrintWriter out=new PrintWriter(client.getOutputStream());
        //Mutil User but can parallel
        while(true){
         String str=in.readLine();
         System.out.println(str);
         out.println("has receive....");
         out.flush();
         if(str.equals("end"))
          break;
    }
        client.close();
    }catch(IOException ex){
    }finally{
       }
      }

      public static void main(String[] args)throws IOException{
       ServerSocket server=new ServerSocket(5678);
       while(true){
       //transfer location change Single User or Multi User
       MultiUser mu=new MultiUser(server.accept());
       mu.start();
       }
      }
    }



    客戶端代碼:

    import Java.net.*;
    import Java.io.*;

    public class Client{
    static Socket Server;

    public static void main(String[] args) throws Exception
    {
    Server=new Socket (InetAddress.getLocalHost(),5678);
    BufferedReader in=new BufferedReader(new InputStreamReader(Server.getInputStream()));
    PrintWriter out=new PrintWriter(Server.getOutputStream());
    BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));
    while(true)
    {
    String str=wt.readLine();
    out.println(str);
    out.flush();
    if(str.equals("end"))
    {
    break;
    }
    System.out.println(in.readLine());
    }
    Server.close();
    }
    }

    這段程序是接受客戶的鍵盤輸入,并把信息輸出到服務端。并把"end"作為退出的命令

    以上程序完成了兩臺計算機的簡單通信。

    主站蜘蛛池模板: 无码中文字幕av免费放dvd| 国产精品视频全国免费观看| 国产一级片免费看| 亚洲熟妇无码另类久久久| 一级全免费视频播放| 亚洲欧洲中文日韩av乱码| 国产精品亚洲av色欲三区| 国产精品国产午夜免费福利看| 亚洲熟妇AV一区二区三区浪潮 | 亚洲国产精品婷婷久久| 中文字幕高清免费不卡视频| 国产亚洲精久久久久久无码77777 国产亚洲精品成人AA片新蒲金 | 亚洲爆乳无码一区二区三区| 免费日本一区二区| 亚洲精选在线观看| 精品久久久久久久久免费影院| 香蕉大伊亚洲人在线观看| 午夜dj在线观看免费视频| 美女被吸屁股免费网站| 亚洲五月综合缴情在线观看| 中文字幕av免费专区| 久久精品亚洲一区二区三区浴池 | 亚洲日本在线免费观看| 一个人免费高清在线观看| 久久精品国产亚洲av瑜伽| 亚洲日本在线观看视频| 无码AV片在线观看免费| 亚洲国产高清视频在线观看| 在线A级毛片无码免费真人| 亚洲人精品午夜射精日韩| 久久九九AV免费精品| 国产免费私拍一区二区三区| 国产精品亚洲专一区二区三区| 亚洲高清无码综合性爱视频| 国产麻豆成人传媒免费观看| 亚洲性无码av在线| 亚洲情侣偷拍精品| 免费能直接在线观看黄的视频| 亚洲精品永久在线观看| 亚洲精品二区国产综合野狼| 在线观看视频免费完整版|