標籤:accept void 自身 color 使用 inpu rgs 讀取 address
TCP傳輸,用戶端建立過程: 1、建立TCP用戶端SOCKET服務,使用的Socket對象,並明確目的地要串連的主機; Socket socket = new Socket("192.168.1.4",10002); 2、如果串連建立成功,說明資料轉送通道已建立。該通道就是Scoket流,是底層建立好的;可以用Socket對象來擷取輸出輸入了流; OutputStream out = socket.getOutputStream(); 3、使用輸出資料流將資料寫出。 out.write("tcp示範".getBytes()); 4、關閉資源。 socket.close();
tcp服務端: 1、建立tcp服務端Socket服務,使用ServerSocket對象,指定一個連接埠供其他主機訪問; ServerSocket ss = new ServerSocket(10002); 2、服務端為了不亂,會擷取各個用戶端Socket服務物件,用其自身的socket對象與其交流; Socket s = ss.accept(); String ip =s.getInetAddress().getHostAddress(); 3、通過用戶端對象擷取socket流讀取用戶端發來的資料 InputStream in = s.getInputStream(); byte[]buf = new byte[1024]; int len =in.read(buf); String text = new String(buf,o,len); 4、關閉資源。關用戶端,關服務端;(關閉用戶端是為了不佔用服務端資源,而且在服務端關閉可控)
s.close(); //服務端一般不關閉;
import java.io.*;import java.net.*;public class Client{ public static void main(String[]args)throws IOException{ BufferedReader bufr = new BufferedReader(new FileReader("e:\\client.txt")); Socket ss = new Socket("192.168.1.4",9987); BufferedWriter bufout = new BufferedWriter(new OutputStreamWriter(ss.getOutputStream())); String line = null; while((line = bufr.readLine())!=null){ bufout.write(line); bufout.newLine(); bufout.flush(); } ss.shutdownOutput(); BufferedReader bufin = new BufferedReader(new InputStreamReader(ss.getInputStream())); String text = bufin.readLine(); System.out.println(text); bufr.close(); bufout.close(); bufin.close(); }}
import java.io.*;import java.net.*;public class Server{ public static void main(String[]args)throws IOException{ ServerSocket ss = new ServerSocket(9987); Socket s = ss.accept(); BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream())); PrintWriter pw = new PrintWriter(new FileWriter("f:\\server.txt"),true); String line =null; while((line=bufin.readLine())!=null){ pw.println(line); } BufferedWriter bufout = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); bufout.write("上傳成功"); bufout.flush(); s.close(); pw.close(); }}
java===TCP(檔案上傳功能)