伺服器端:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class TransServer {
public static void main(String[] args) throws Exception {
/*
* 轉換伺服器端
* 1.serversocket對象
* 2.擷取socket對象
* 3.源:讀取用戶端發送過來的需要轉換的資料
* 4.目的:顯示在控制台上
* 5.将資料轉成大寫發給用戶端
* */
//1.
ServerSocket ss = new ServerSocket(6666);
//2.擷取socket對象
Socket s = ss.accept();
//擷取ip
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+"...connected");
//3.擷取socket對象的讀取流,并裝飾
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
//4.擷取socket對象的輸出流,并裝飾
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
String line = null;
while((line=br.readLine())!=null){
System.out.println(line);
out.println(line.toUpperCase());
out.flush();
}
br.close();
out.close();
s.close();
ss.close();
}
}
用戶端:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
public class TransClient {
public static void main(String[] args) throws Exception, IOException {
/**
* 用戶端:
* 1.需要先有socket用戶端
* 2.用戶端的資料源 鍵盤
* 3.用戶端的目的 socket
* 4.接收伺服器的資料 源 socket
* 5.将資料列印在控制台
* 6.在這些流中操作的資料,都是文本資料
*
*
*/
//1.建立socket對象
Socket s = new Socket(InetAddress.getLocalHost(), 6666);
//2.擷取鍵盤錄入
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//3.擷取socket輸出流
PrintWriter pw = new PrintWriter(s.getOutputStream(), true);
//4.擷取socket輸入流 讀取伺服器端傳回的大寫資料
BufferedReader br1 = new BufferedReader(new InputStreamReader(s.getInputStream()));
String line=null;
while((line=br.readLine())!=null){
//發送
pw.println(line);
pw.flush();
//接收
String str = br1.readLine();
System.out.println(str);
}
s.close();
}
}
注意:先啟動伺服器端,再啟動用戶端。最後應該在用戶端的控制台上輸入字元。