TCP協議下java通訊

來源:互聯網
上載者:User

標籤:構造方法   初步   out   字元流   extend   pack   stream   void   ann   

初步,還要改進

伺服器

package six.four.five.server;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.net.InetSocketAddress;import java.net.ServerSocket;import java.net.Socket;import java.net.SocketAddress;import java.util.ArrayList;import java.util.List;//:這是一個伺服器public class Sever {    public static void main(String[] args) {        //:接受來自用戶端的輸出資料流,並讀取其中的資訊        List<BufferedWriter> list = new ArrayList<BufferedWriter>();        try {            //實現伺服器通訊端。伺服器通訊端等待請求通過網路傳入。它基於該請求執行某些操作,然後可能向要求者返回結果。             ServerSocket server = new ServerSocket(8888);            System.out.println("伺服器已啟動");            while(true) {                //此類實現用戶端通訊端(也可以就叫“通訊端”)。通訊端是兩台機器間通訊的端點。                Socket socket = server.accept();                System.out.println("Client has been linked!");                //返回此通訊端的輸入資料流,也就是用戶端的輸入資料流,交給線程並讀取其中的資料到                //InputStream is = socket.getInputStream();                //將位元組流轉換為字元流                InputStreamReader ir = new InputStreamReader(socket.getInputStream());                //建立緩衝流                BufferedReader br = new BufferedReader(ir);                //返回此通訊端的輸出資料流,同理是用戶端的輸出資料流,交給集合list,要發給每個用戶端                OutputStream os = socket.getOutputStream();                //將字元流轉換為位元組流                OutputStreamWriter ow = new OutputStreamWriter(os);                //建立緩衝流                BufferedWriter bw = new BufferedWriter(ow);                //添加輸出資料流                list.add(bw);                //將輸入資料流和集合傳到線程中,並執行線程                new MyThread(br, list).start();            }        } catch (IOException e) {            e.printStackTrace();        }    }}

伺服器的線程

package six.four.five.server;//:不停的接受用戶端發來的訊息import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.util.List;public class MyThread extends Thread{    //接受輸出資料流的集合    private List<BufferedWriter> ow;    //緩衝流    private BufferedReader br;    //線程的構造方法    public MyThread(BufferedReader br, List<BufferedWriter> ow) {        this.ow = ow;        //this.is = new InputStreamReader(is);        this.br = br;    }    @Override    public  void run() {        String msg = null;        while(true) {            try {                while(null != (msg = br.readLine())) {                    //輸出字串                    System.out.println(msg);                }                for(BufferedWriter lo : ow) {                    //將接受到用戶端的資訊寫到流中,以便發給每個用戶端                    lo.write(msg);                    lo.flush();                }            } catch (IOException e) {                e.printStackTrace();            }        }    }}

 用戶端

package six.four.five.clients;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.net.InetAddress;import java.net.Socket;import java.net.UnknownHostException;import java.util.Scanner;public class Clients {    public static void main(String[] args) {        try {            Socket  socket = new Socket(InetAddress.getByName("192.168.0.124"), 8888);            System.out.println("You has benn linked Sever!");            //            InputStream is = socket.getInputStream();            InputStreamReader ir = new InputStreamReader(is);            BufferedReader br = new BufferedReader(ir);            //            OutputStream os = socket.getOutputStream();            OutputStreamWriter ow = new OutputStreamWriter(os);            BufferedWriter bw = new BufferedWriter(ow);            //            Scanner input = new Scanner(System.in);            System.out.println("What your name?");            String name = input.nextLine();            System.out.print("Now,you can say anything:");            String msg = "";            new MyThread(br).start();            while(!(msg.equals("bye"))) {                //b = msg.getBytes();                msg = name + ": " + input.nextLine();                bw.write(msg);                bw.flush();            }        } catch (UnknownHostException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }}

用戶端的線程

package six.four.five.clients;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;public class MyThread extends Thread{    private BufferedReader br;    public MyThread(BufferedReader br) {        this.br = br;    }    @Override    public void run() {        String msg = null;        while(true) {            try {                while(null != (msg = br.readLine())) {                    System.out.println(msg);                }            } catch (IOException e) {                e.printStackTrace();            }        }    }}

 

TCP協議下java通訊

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.