日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁(yè) > 編程 > Java > 正文

基于java TCP網(wǎng)絡(luò)通信的實(shí)例詳解

2019-11-26 16:04:57
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
JAVA中設(shè)計(jì)網(wǎng)絡(luò)編程模式的主要有TCP和UDP兩種,TCP是屬于即時(shí)通信,UDP是通過(guò)數(shù)據(jù)包來(lái)進(jìn)行通信,UDP當(dāng)中就會(huì)牽扯到數(shù)據(jù)的解析和傳送。在安全性能方面,TCP要略勝一籌,通信過(guò)程中不容易出現(xiàn)數(shù)據(jù)丟失的現(xiàn)象,有一方中斷,兩方的通信就會(huì)結(jié)束,UDP數(shù)據(jù)包傳送的過(guò)程當(dāng)中,一方中斷,數(shù)據(jù)包有很大的可能丟失,還有可能傳來(lái)的數(shù)據(jù)包的順序是錯(cuò)亂的;在效率方面,UDP要比TCP快的不只是一點(diǎn)點(diǎn)的問(wèn)題,若終端有解析數(shù)據(jù)方法的函數(shù),數(shù)據(jù)包就會(huì)源源不斷的傳送過(guò)來(lái),然后反饋回去。
以上都是我自己的理解,下面是關(guān)于TCP協(xié)議通信的兩個(gè)類(lèi);
Server類(lèi):
復(fù)制代碼 代碼如下:

package TCP;
import java.io.*;
import java.net.*;
import javax.swing.*;
 public class Server {
     //服務(wù)器端的輸入流
    static  BufferedReader br;
     //服務(wù)器端的輸出流
    static  PrintStream ps;
     //服務(wù)器相關(guān)的界面組件
    static  JTextArea text;   
            JFrame frame;

    public Server(){
        //服務(wù)器端的界面的實(shí)例化
        JFrame frame=new JFrame("服務(wù)器端");
        text=new JTextArea();
        JScrollPane scroll =new JScrollPane(text);
        frame.add(scroll);
        frame.setVisible(true);
        frame.setSize(300,400);
        //這里設(shè)置服務(wù)器端的文本框是不可編輯的
        text.setEditable(false);
    }

    public static void main(String[] args) throws Exception{      
        new Server();    //生成服務(wù)器界面
        //通過(guò)服務(wù)器端構(gòu)造函數(shù)  ServerSocket(port) 實(shí)例化一個(gè)服務(wù)器端口
        ServerSocket server=new ServerSocket(2000);
        text.append("監(jiān)聽(tīng)2000端口"+"/n");
        //實(shí)例化一個(gè)接受服務(wù)器數(shù)據(jù)的對(duì)象
        Socket client=server.accept();
        br =new BufferedReader(new InputStreamReader(client.getInputStream()));
        ps =new PrintStream(client.getOutputStream());       
        String msg;
        //如果輸入流不為空,將接受到的信息打印到相應(yīng)的文本框中并反饋回收到的信息
        while ((msg =br.readLine())!=null) 
        {
            text.append("服務(wù)器端收到:"+msg+"/n");
            ps.println(msg);
            if(msg.equals("quit"))
            {  
                text.append("客戶端“2000”已退出!"+"/n");
                text.append("服務(wù)器程序?qū)⑼顺觯?);               
                break;
            }
        }
        ps.close();
        br.close();
        client.close();
    }
}

Client類(lèi):
復(fù)制代碼 代碼如下:

package TCP;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import java.net.*;
public class Client implements ActionListener{
   //這里有兩個(gè)圖形界面,一個(gè)是連接的frame,另一個(gè)和服務(wù)器通信的界面frame1   
    private  JFrame frame;
    private  JLabel adress;
    private  JLabel port;
             JTextField adresstext;
             JTextField porttext;
             JButton connect;

    private JFrame frame1;
    private JLabel shuru;
    private JPanel panel1;
    private JPanel panel2;
    private JLabel jieshou;
            JButton send;
    static JTextArea shurukuang;
    static TextArea jieshoukuang;

    //從服務(wù)端接受的數(shù)據(jù)流
    static BufferedReader br1;
    //從客戶端輸出的數(shù)據(jù)流
    static PrintStream ps;
    //從通信界面中的輸入框接受的數(shù)據(jù)流
    static BufferedReader br2;
    static Socket client;
    //將輸入框字符串轉(zhuǎn)換為字符串流所需的字符串的輸入流
    static ByteArrayInputStream stringInputStream ;

   public Client() {
       //連接界面的實(shí)例化
        frame=new JFrame();
        adress=new JLabel("IP 地址");
        port =new JLabel("端口號(hào)");
        adresstext=new JTextField("127.0.0.1",10);
        porttext=new JTextField("2000",10);
        connect=new JButton("連接");
            //連接界面的布局          
        frame.setLayout(new FlowLayout());
        frame.add(adress);
        frame.add(adresstext);
        frame.add(port);  
        frame.add(porttext);
        frame.add(connect);
        frame.setVisible(true);
        frame.setSize(200,150);          
        connect.addActionListener(this);
          //通信界面的實(shí)例化
        frame1=new JFrame();
        shuru=new JLabel("請(qǐng)輸入");
          shurukuang=new JTextArea("請(qǐng)輸入????",5,40); 

          panel1=new JPanel();
          panel1.add(shuru);
          panel1.add(shurukuang);
          panel1.setLayout(new FlowLayout());

          send=new JButton("發(fā)送");
          panel2=new JPanel();
          jieshou=new JLabel("已接受");

         jieshoukuang=new TextArea(8,60);    
          jieshoukuang.setEditable(false);

          panel2.add(jieshou);
          panel2.add(jieshoukuang);
          panel2.setLayout(new FlowLayout());       
          frame1.setLayout(new FlowLayout());
              //通信界面都的布局
          frame1.add(BorderLayout.NORTH,panel1);
          frame1.add(send);
          frame1.add(BorderLayout.SOUTH,panel2);
             //連接時(shí)通信界面是處于看不到的
          frame1.setVisible(false);
          frame1.setSize(500,350);
          send.addActionListener(this); 
            }
         //兩個(gè)界面當(dāng)中都有相應(yīng)的按鈕時(shí)間,為相應(yīng)的時(shí)間添加動(dòng)作
      public  void  actionPerformed(ActionEvent e) {
         if(e.getSource()==connect){   
          try {
                  //當(dāng)觸發(fā)連接按鈕時(shí),實(shí)例化一個(gè)客戶端
                client=new Socket("127.0.0.1",2000);   
                  //隱藏連接界面,顯示通信界面
                frame.setVisible(false);
                frame1.setVisible(true);
                jieshoukuang.append("已經(jīng)連接上服務(wù)器!"+"/n");           
           } catch (IOException e1){
                 System.out.println("鏈接失敗!");
                e1.printStackTrace();
             }
         }
         //通信界面中的發(fā)送按鈕相應(yīng)的時(shí)間處理
        if(e.getSource()==send){
              //將輸入框中的字符串轉(zhuǎn)換為字符串流
             stringInputStream = new ByteArrayInputStream((shurukuang.getText()).getBytes());
             br2 =new BufferedReader(new InputStreamReader(stringInputStream));
             String msg;
             try{
              while((msg=br2.readLine())!=null){   
                  ps.println(msg);   //將輸入框中的內(nèi)容發(fā)送給服務(wù)器端       
                  jieshoukuang.append("向服務(wù)器發(fā)送:"+msg+"/n");
                  jieshoukuang.append("客戶端接受相應(yīng):"+br1.readLine()+"/n");
                  if(msg.equals("quit"))
                     {
                        jieshoukuang.append("客戶端將退出!");
                        br1.close();
                        ps.close();
                        client.close();
                        frame1.setVisible(false);
                        break;
                           }                     
                      }   
             }catch(IOException e2){
                 System.out.println("讀輸入框數(shù)據(jù)出錯(cuò)!");                 
              }
             shurukuang.setText("");
          }
      } 

      public static void main(String[] args) throws IOException{
           new Client();  //實(shí)例化連接界面
           client=new Socket("127.0.0.1",2000);            
           //從服務(wù)端接受的數(shù)據(jù) 
           br1=new BufferedReader(new InputStreamReader(client.getInputStream()));
            //從客戶端輸出的數(shù)據(jù)
           ps =new PrintStream(client.getOutputStream());         
              }
        }

寫(xiě)完這兩個(gè)類(lèi)以后還是有幾個(gè)問(wèn)題:
1)main 函數(shù)為什么非要用 static 來(lái)修飾?
2)緩沖對(duì)象 BufferedReader 為什么不能直接用于判斷,非要將讀到的數(shù)據(jù)賦值給字符串來(lái)進(jìn)行操作?
3)在連接界面當(dāng)中的 Connect 按鈕事件 當(dāng)中我有實(shí)例化一個(gè) 客戶端的對(duì)象,但是我注釋掉主函數(shù)當(dāng)中 client=new Socket("127.0.0.1",2000); 的這一句的時(shí)候,就會(huì)發(fā)現(xiàn)拋出 NULLPOINTEXCEPTION 異常,我很不理解?
希望有看到這文章的大牛們能不吝賜教,我也正在不停的翻著《Think in java》希望在某個(gè)不起眼的角落里面發(fā)現(xiàn)我的答案。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
久久久91精品国产| 国产免费播放一区二区| 黄色资源在线观看| 91精品日本| 99精品视频99| 日韩免费视频| 国产欧美日产一区| 日韩欧美三级视频| 日本一欧美一欧美一亚洲视频| 欧美一级搡bbbb搡bbbb| 欧美久久久久久蜜桃| 色综合天天性综合| 欧美日韩综合在线| 国产欧美 在线欧美| 欧美在线日韩精品| 国产裸体歌舞团一区二区 | 在线观看av的网站| 国产高清视频一区二区| 精品国产乱码久久久久久蜜臀 | 国产一区在线不卡| 亚洲黄页一区| 欧美日韩精品欧美日韩精品一| 国产真实乱子伦精品视频| 日韩精品视频在线免费观看| 日韩中文字幕在线播放| 国产在线黄色片| 国产丝袜一区二区| 正在播放日韩精品| 国产福利一区二区在线精品| www.三级.com| 久久夜色精品国产欧美乱极品| 日韩精品在线观| 视频一区二区中文字幕| 国产91久久久久蜜臀青青天草二| 91精品在线观看视频| 国产在线黄色片| 国自产拍在线网站网址视频| 日韩欧美中文在线| 欧美中文字幕| 亚洲欧洲国产视频| 国产一级免费看| 国产视频2区| 午夜少妇久久久久久久久| 人妻一区二区三区免费| 中文字幕在线国产| 精品福利一区二区三区| 欧美日韩国产中字 | 亚洲国产无线乱码在线观看| 亚洲一二三不卡| 欧美熟妇乱码在线一区| 欧美不卡视频| 在线国产日本| 亚洲电影中文字幕在线观看| 精品国产乱码久久久久久蜜臀| 欧美三级日韩三级| 精人妻一区二区三区| 婷婷中文字幕在线观看| www.日韩免费| 91国内在线| 香蕉精品久久| 国产欧美日韩成人| 日韩免费视频一区二区视频在线观看| 天堂在线一区二区三区| 中文在线一区| 日韩欧美国产1| 三级网站免费观看| 亚洲校园欧美国产另类 | 日韩视频在线一区二区| 国产欧美自拍一区| 亚洲美女视频一区| 91国内精品在线视频| 中文字幕国产视频| 亚洲免费看av| 91精品国产全国免费观看 | 国产欧美日韩不卡| 国产一区久久久| 久草视频在线看| 欧美日韩在线视频一区| 亚洲黄色在线观看| 免费精品国产自产拍在| 欧美日韩国产三级| 精品极品三级久久久久| 最近中文字幕日韩精品| 国产免费永久在线观看| 黄色片网站在线| 亚洲永久免费视频| 欧美日韩高清不卡| 91日韩中文字幕| 欧美日韩视频免费播放| 日韩三区免费| 国产成人精品亚洲| 色综合久久六月婷婷中文字幕| 欧美日韩亚洲国产综合| 国产偷国产偷亚洲清高网站| 亚洲理论中文字幕| 中文字幕一区二区三区精品| 欧美国产一区视频在线观看| 欧美日韩性视频| 在线视频日韩欧美| 视频一区视频二区中文| 国产黄色在线观看| 欧美日韩在线观看成人| 国产日韩专区| 亚洲视频在线观看日本a| 欧美婷婷久久| 99视频在线看| 欧美日韩国产中文精品字幕自在自线| 精品久久91| 91国内精品在线视频| 日本啊v在线| 亚洲乱码中文字幕综合| 91精品国产高清| 欧美日韩激情一区二区三区| 欧美日韩精品电影| 欧美日韩久久久| 午夜私人影院在线观看| 一区二区三区高清在线| 区日韩二区欧美三区| 精品一区二区三区中文字幕在线| 日韩欧美不卡视频| 国产丝袜欧美中文另类| 中文字幕久久精品| 亚洲第一视频网站| 日韩av二区| 精品三级久久| 日韩在线视频二区| 国产三级做爰在线观看| 精品欧美久久久| 国产网站av| 欧美一级免费看| 国产69精品久久app免费版| 国产乱国产乱老熟300| 欧美性生交大片免费| 日韩在线不卡一区| 欧美一卡2卡3卡4卡| 欧美亚洲国产日韩| 999精品网| 日韩免费视频一区| 久草亚洲一区| 日韩国产高清一区| 日韩在线一区二区| 97久久精品| 午夜少妇久久久久久久久| 蜜桃精品在线| 青青国产91久久久久久| 国产乱国产乱300精品| 国产永久在线观看| 久久精品99国产国产精| 国产在线不卡一区| av一区在线| 精品日韩欧美| 91精品国产91综合久久蜜臀| 欧美激情一区二区三区在线| 日本a级黄色| 欧美国产日韩在线播放| 日韩精品在线中文字幕| 日韩精品在线私人| 久久香蕉一区| 国产免费久久久| 亚欧成人精品| 国产区日韩欧美| 欧美日韩中文字幕视频| 日韩中文字幕91| 国产丝袜一区| 日韩欧美一级视频| 国产欧美一级| www 日韩| 国产无套粉嫩白浆在线2022年| 国产黄在线播放| 国产成人精品网址| 精品区一区二区| 日韩精品首页| 日韩专区中文字幕| 午夜国产在线视频| 亚洲a一级视频| 99久久精品国产成人一区二区| 一区二区三区在线播放欧美| 国产一二三视频| 999精品在线| 欧美日韩国产高清| 精品国产999| 亚洲国产专区| 日韩欧美亚洲国产一区| 欧美日韩国产一中文字不卡| 色屁屁一区二区| www.eeuss影院| 日韩欧美国产午夜精品| 亚洲欧美中文字幕| 久久精品女人| www.xxxx精品| 91精品国产色综合久久久蜜香臀| 日韩亚洲一区在线| 欧美在线视频第一页| 日韩精品视频在线| 国产 欧美 日韩 在线| 日韩欧美99| 91精品综合久久久久久| 国产天堂素人系列在线视频| 一区二区视频在线| 精品一二线国产| 三级精品视频| 中文字幕乱码在线| 成人xxxx| 91av久久久| 亚洲电影中文字幕在线观看| 在线视频第一页| 精品综合久久久久| 国产xxx在线| 在线中文字幕视频观看| 日韩av不卡在线观看| 国产一级片播放| 日本精品二区| 日韩欧美在线影院| 国产一级久久久| 国产一级在线免费观看| 国产亚洲短视频| 欧美99久久| 国产欧美日韩亚洲| 国产一级片网站| 一级日韩一级欧美| 高清日韩中文字幕| 一区二区三区在线免费| 中文字幕日韩在线观看| 一本一道久久a久久精品综合蜜臀| 欧美日韩一级视频| 中文字幕一区不卡| 久久久久久久久综合| 午夜av一区二区| 91精品国产丝袜白色高跟鞋| 国产一级在线播放| 在线中文免费视频| 精品一区二区三区中文字幕| www.三级.com| 欧美日韩国产在线看| 国产一级免费| 视频一区三区| 91精选在线| 色综合影院在线| 日韩免费视频一区二区视频在线观看| 日韩欧美一级在线播放| 欧美日韩一二| 欧美日韩综合在线| 日韩国产专区| 亚洲视频色图| 日韩欧美成人一区二区三区| 亚洲国产专区| 欧美日韩国产系列| 国产资源在线观看| 国产婷婷色一区二区三区| 日韩三级高清在线| 亚洲影视资源网| 日韩精品中文在线观看| 亚洲电影中文字幕在线观看| 国产福利免费观看| 亚洲羞羞网站| 国产欧美综合视频| 国产91欧美| 欧美日韩成人一区| 久久久久蜜桃| 日韩在线欧美| 中文亚洲免费| 成人禁用看黄a在线| 欧美日韩夫妻久久| 最近中文字幕日韩精品| 91麻豆精品国产91久久久使用方法 | 91精选在线| 一级特黄大欧美久久久| 在线视频不卡国产V| 日韩视频在线一区二区| 国产日韩精品久久久| 色一区在线观看| 一区二区三区视频网站 | 亚洲综合日韩中文字幕v在线| 不卡一二三区| 久久视频在线免费观看| 久久99精品久久久久久青青日本| 国产黄色在线观看| 亚亚洲欧洲精品| 一区二区在线观看不卡| 欧美亚洲天堂网| xxxxx性| 欧美日韩精品电影| 国产三级免费观看| 中文字幕在线官网| 国产亚洲污的网站| 国产字幕中文| 中文字幕精品在线| 国产日产一区二区| 国产日韩av一区| 国内激情久久| 国产综合成人久久大片91| www.中文字幕在线观看| 亚洲一区在线观看网站| 91精品国产91久久久久久不卡| 首页国产欧美久久| 国产欧美日韩中文| 中文av字幕一区| 国产成人精品网址| 在线免费视频一区二区| 亚洲综合视频一区| 一区二区视频免费看| 免费在线观看国产黄| 国产黄在线观看免费观看不卡| 日韩欧美久久久| 久久激情一区| 日韩精品视频免费| 亚洲免费精品视频| 亚洲成人7777| 精品三级av| 欧美日韩一级黄| 粉嫩喷白浆久久| 日韩高清不卡| av免费网站在线| 国产成人精品免费网站| 国产字幕在线看| 国产成人精品综合久久久| 日韩 欧美 综合| 欧美国产一级片| 欧美久久在线| 国产视频一区二| 欧美日韩性视频| 中文精品在线观看| 中文字幕在线视频久| 欧美三级一区二区三区| 日韩中文在线字幕| 在线观看一区| av一区在线| 中文字幕欧美亚洲| 久久99精品久久久久婷婷| www.狠狠| 精品一二三四区| 国产午夜在线观看| 欧美午夜影院在线视频| 在线视频1区2区| 久久久91精品国产| 色综合天天综合网天天狠天天| 亚洲第一中文字幕| 国产香蕉精品视频| 中文字幕高清在线播放| 日韩黄色在线播放| 欧美日韩久久久| 欧美日韩尤物久久| 国自产拍在线网站网址视频| 国产综合精品在线| 狠狠色综合色区| 欧美日韩久久久| 中文字幕高清在线播放| 国产激情久久久| 高清在线一区| 欧美日韩久久不卡| 中文字幕五月天| 日韩高清不卡一区二区| 日韩欧美中文字幕一区| 在线一区二区三区精品| 国产欧美一级| 国产h片在线观看| 色综合天天性综合| 欧美日韩在线播放一区| 在线亚洲免费| 久久精品在线观看| 一区二区三区久久| 一区二区三区精品久久久| 红桃视频亚洲| 亚洲欧美中文字幕| 欧美日韩在线国产| 拍真实国产伦偷精品| av免费不卡国产观看| 91蜜桃婷婷狠狠久久综合9色| 日韩国产欧美| 日韩在线视频在线观看| 一区二区不卡视频| 99亚洲视频| 精品1区2区3区| 久久久综合精品| 中文字幕日韩欧美在线| 天堂在线一区二区三区| 欧美在线观看视频一区| 日韩精品视频在线播放| 日韩精品资源二区在线| 亚洲欧美日本国产专区一区| 韩国av一区二区| 日韩国产亚洲欧美| 国产福利一区二区精品秒拍| 精品一区二区三区中文字幕| 91国内在线| 在线中文字幕视频观看| 日韩网站中文字幕| 亚洲va中文字幕| 91精品国产91久久久久青草| 91精品在线免费观看| 欧美日韩在线播放三区四区| 中文在线视频| 日韩精品 欧美| 欧美日韩亚洲综合在线| 日韩一级在线视频| 国产黄色片中文字幕| 精品成人久久av| 国产一二三四| 亚洲国产综合久久| 91精品免费在线观看|