天天看點

BufferedReader,InputStreamReader,InputStream,FileInputStream,PrintWriter

BufferedReader 是字元流的包裝類
InputStreamReader 是位元組流通向字元流的橋梁
InputStream  此抽象類是表示位元組輸入流的所有類的超類
FileInputStream 從檔案系統中的某個檔案中獲得輸入位元組
PrintWriter 向文本輸出流列印對象的格式化表示形式
           

舉例如下:

鍵盤錄入:
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
           
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
out.println(line);
//免去了flush操作,帶true配合 println列印方法。
           
//tcp協定模拟用戶端和服務端互動的小程式
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class TransClient {

	/**
	 * @param args
	 * @throws IOException 
	 * @throws  
	 */
	public static void main(String[] args) throws IOException {
		System.out.println("用戶端運作......");
		// 用戶端:
		// 步驟:
		// 1,建立socket,明确位址和端口。
		Socket s = new Socket("192.168.1.223", 10005);

		// 2,源:鍵盤錄入。擷取需要轉換的資料。
		BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
		
		// 3,目的:網絡,socket輸出流。将錄入的資料發送到服務端。
//		OutputStream out = s.getOutputStream();
		//既然都是字元資料,為了便于操作,使用額外功能,轉換。同時提高效率。
		//BufferedWriter bufOut = new BufferedWriter(new OutputStreamWriter(out));可以使用列印流
		PrintWriter out = new PrintWriter(s.getOutputStream(),true);
		
		// 4,源:socket,socket讀取流,讀取服務端發回來的大寫資料。
//		InputStream in = s.getInputStream();
		BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
		
		// 5,目的:用戶端顯示器,将大寫資料顯示出來。直接使用輸出語句。
		
		// 6,頻繁的讀寫操作。
		String line = null;
		while((line=bufr.readLine())!=null){
			
			//将讀取鍵盤的資料發送到服務端。
			out.println(line);
//			out.flush();
			if("over".equals(line)){
				break;
			}
			
			//讀取服務端傳回的資料。
			String upperText = bufIn.readLine();
			System.out.println(upperText);
		}
		
		// 7,關閉資源。
		s.close();
	}

}

           
//tcp協定模拟服務端的小程式

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class TransServer {

	/**
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {

		System.out.println("服務端運作....");
		// 服務端:
		// 思路:
		// 1,建立服務端socket 明确端口。
		ServerSocket ss = new ServerSocket(10005);
		while (true) {
			// 擷取用戶端對象。
			Socket s = ss.accept();
			System.out.println(s.getInetAddress().getHostAddress()+".....connected");

			// 2,源:socket輸入流。讀取用戶端的發過來的資料。
			BufferedReader bufIn = new BufferedReader(new InputStreamReader(
					s.getInputStream()));

			// 3,目的:socket輸出流。将轉成大寫的資料發送給用戶端。
			PrintWriter out = new PrintWriter(s.getOutputStream(),true);

			// 4,頻繁的讀寫操作。
			String line = null;
			while ((line = bufIn.readLine()) != null) {
				if("over".equals(line)){//如果用戶端發過來的是over,轉換結束。
					break;
				}
				System.out.println(line);
				// 将讀取到的字母資料轉成大寫,發回給用戶端。
				out.println(line.toUpperCase());
//				out.flush();
			}
			// 5,關閉用戶端。
			s.close();
		}

	}

}