java socket編程基礎

來源:互聯網
上載者:User

標籤:

1. [代碼]讀操作Runable 
 

1
package com.hrd.test.socket; 2 3 import java.io.BufferedReader; 4 import java.io.IOException; 5 import java.io.PrintWriter; 6 7 /** 8 * 作者: ehomeud 建立於: 2015/4/15 13:15 9 */10 public class ReadThread implements Runnable {11 12 private BufferedReader br;13 private String sc;14 15 public ReadThread(BufferedReader br,String sc){16 this.br=br;17 this.sc =sc;18 }19 @Override20 public void run() {21 while (true){22 try {23 String str = br.readLine();24 System.out.println(sc +":" +str);25 } catch (IOException e) {26 e.printStackTrace();27 }28 }29 }30 }
2. [代碼]寫操作Runable
package com.hrd.test.socket; import java.io.BufferedReader;import java.io.IOException;import java.io.PrintWriter; /** * 作者: ehomeud 建立於: 2015/4/15 13:20 */public class WriteThread implements Runnable {     private PrintWriter pw;    private BufferedReader br;     public WriteThread(PrintWriter pw, BufferedReader br) {        this.pw = pw;        this.br = br;    }     @Override    public void run() {        try {            while (true) {                pw.println(br.readLine());                pw.flush();            }        } catch (IOException e) {            e.printStackTrace();        }    }}
3. [代碼]服務端ServerSocket
package com.hrd.test.socket; import java.io.*;import java.net.ServerSocket;import java.net.Socket;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors; /** * 作者: ehomeud 建立於: 2015/4/15 10:00 */public class Server {     public static int PORT = 9999;    public static void main(String[] args) {        ServerSocket s = null;        Socket socket = null;        BufferedReader br = null;        PrintWriter pw = null;        BufferedReader console=null;         ExecutorService pool = Executors.newFixedThreadPool(2);        try {            //設定服務端通訊連接埠            s = new ServerSocket(PORT);            System.out.println("ServerSocket Start:"+s);            //等待請求,該方法會阻塞,直到獲得請求            socket = s.accept();            System.out.println("Connection accept socket:"+socket);            //用於接收用戶端發來的請求            br = new BufferedReader(new InputStreamReader(socket.getInputStream()));            //用於發送返回資訊,發送資料要調用.flush()方法            pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);            console = new BufferedReader(new InputStreamReader(System.in));             pool.submit(new ReadThread(br,"server"));            pool.submit(new WriteThread(pw,console));            while(true){                Thread.sleep(10000);            }        } catch (Exception e) {            e.printStackTrace();        }finally{            System.out.println("關閉中.....");            try {                console.close();                br.close();                pw.close();                socket.close();                s.close();            } catch (Exception e2) {            }        }    }}
4. [代碼]用戶端Socket  
package com.hrd.test.socket; import java.io.*;import java.net.Socket;import java.util.concurrent.Executor;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors; /** * 作者: ehomeud 建立於: 2015/4/15 10:10 */public class Client {     public static void main(String[] args) {        Socket socket = null;        BufferedReader br = null;        PrintWriter pw = null;         ExecutorService pool = Executors.newFixedThreadPool(2);        try {            //用戶端socket指定伺服器的地址和連接埠號碼            socket = new Socket("127.0.0.1", Server.PORT);            System.out.println("Socket:" + socket+"用戶端啟動中...");            //同伺服器原理一樣            br = new BufferedReader(new InputStreamReader(                    socket.getInputStream()));            pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(                    socket.getOutputStream())));             BufferedReader console = new BufferedReader(new InputStreamReader(System.in));            //提交讀            pool.submit(new WriteThread(pw,console));            pool.submit(new ReadThread(br,"client"));            while (true){                Thread.sleep(100000);            }        } catch (Exception e) {            e.printStackTrace();        } finally {            try {                System.out.println("關閉中......");                br.close();                pw.close();                socket.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }  }

 

 

java socket編程基礎

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.