• <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • Java面向對象
    Java異常
    Java數組
    Java常用類
    Java集合
    Java IO流
    Java線程
    Java反射
    Socket編程
    Java注解開發
    Java GoF設計模式
    HashMap
    Java內存模型
    Java線性表

    Java Socket編程教程

     

     

    計算機程序的架構

     

    單機版應用程序, 最多只能由一個用戶使用, 如Word程序,記事本程序

    C/S結構, Client(客戶端)/Server(服務器). 需要下載,安裝,升級客戶端應用程序, 客戶端與服務器進行通訊, 如QQ

    B/S結構, Browser(瀏覽器)/Server(服務器), 用戶只需要有一個瀏覽器即可, 所有操作都由服務器完成

     

     

    網絡開發的三要素

     

    1.要知道對方計算機在哪兒?  計算機的IP, 網絡中的計算機的IP是唯一的

     

    2.知道程序對應的端口號,  端口號就是一個數字, 一臺計算機中可以安裝很多可以聯網的程序, 每個程序都有一個唯一的端口號

     

    3.通訊協議, 計算機之間的通信標準,如數據傳輸速率、傳輸代碼、代碼結構、傳輸步驟

     

     

    TCP/IP協議

     

    現在采用的網絡傳輸協議

     

    TCP傳輸控制協議

     

    IP網際協議

     

    TCP/IP協議的傳輸層有兩個常見的傳輸協議: TCP和UDP,  TCP就像我們打電話, UDP就像對講機

     

    TCP傳輸采用三次握手機制

     

     

    Socket示例

     

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class ChatServer {
    	public static void main(String[] args) throws IOException {
    		// 創建服務器?端, 注冊當前程序的端口號
    		ServerSocket server = new ServerSocket(9090);
    		// 接受客戶端的連接,產?生?一個Socket
    		Socket socket = server.accept();
    		// 獲取Socket的輸?入流, 就是通過這個輸入流獲得客戶端發送給服務器的數據
    		BufferedReader socketReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    		// 獲取Socket的輸出流, 就是通過該輸出流, 服務器把數據發送給客戶端
    		OutputStreamWriter socketOut = new OutputStreamWriter(socket.getOutputStream());
    		// 獲取鍵盤的輸?入流,通過該輸入流讀取鍵盤上輸入的數據
    		BufferedReader keyboardReader = new BufferedReader(new InputStreamReader(System.in));
    		// 不斷讀取客戶端數據
    		String line = null;
    		while ((line = socketReader.readLine()) != null) {
    			System.out.println("客戶端:" + line);
    			System.out.print("我說:");
    			line = keyboardReader.readLine();
    			socketOut.write(line + "\n");
    			socketOut.flush();
    		}
    		// 關閉
    		server.close();
    	}
    }
    import java.net.InetAddress;
    import java.net.Socket;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.BufferedReader;
    import java.io.IOException;
    
    public class ChatClient {
    	public static void main(String[] args) throws IOException {
    		// 建立TCP客戶端與服務器的連接, 指定服務器的IP地址與程序對應的端口號
    //		Socket socket = new Socket(InetAddress.getLocalHost(), 9090);
    		byte[] addr = {-64 ,-88, -115, 2};   	//把192.168.141.2 IP地址轉換為字節
    		InetAddress address = InetAddress.getByAddress(addr) ;
    		Socket socket = new Socket(address, 9090);
    		// 獲取Socket輸出流對象, 通過該流把數據發送給服務器
    		OutputStreamWriter socketOut = new OutputStreamWriter(socket.getOutputStream());
    		// 獲取Socket輸入流對象, 通過該流獲得服務器發送給客戶端的數據
    		BufferedReader socketReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    		// 獲取鍵盤輸入流對象,讀取數據
    		BufferedReader keyboardReader = new BufferedReader(new InputStreamReader(System.in));
    		String line = null;
    		System.out.print("我說:");
    		while ((line = keyboardReader.readLine()) != null) {
    			socketOut.write(line + "\n");
    			// 刷新
    			socketOut.flush();
    			// 讀取服務器端返回的數據
    			line = socketReader.readLine();
    			System.out.println("服務器:" + line);
    			System.out.print("我說:");
    		}
    		socket.close();
    	}
    }
    

     

    全部教程
  • <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • 面对面棋牌游戏