Server類須要作的是:java
1.用ServerSocket指定端口,不妨指定爲8888,只要保證這個端口好在本機中未被佔用便可,代碼以下:服務器
ServerSocket serverSocket = new ServerSocket(8888);
2.接受並監聽發送請求的的客戶端Socket,代碼以下:socket
Socket socket = serverSocket.accept();
3.用輸入流接受客戶端的數據:.net
InputStream is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String clientSay = br.readLine(); System.out.println("Client Say:"+clientSay); socket.shutdownInput();
4.處理完以後,用輸出流給客戶端的字母變爲大寫的在傳回去:code
OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os); pw.print(clientSay.toUpperCase()); pw.flush();
5.關閉資源:server
pw.print(clientSay.toUpperCase()); pw.flush(); pw.close(); os.close(); br.close(); isr.close(); is.close();
完整程序以下:資源
package com.net; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String[] args) { try { ServerSocket serverSocket = new ServerSocket(8888); Socket socket = serverSocket.accept(); //接受客戶端的信息 InputStream is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String clientSay = br.readLine(); // while(clientSay!=null) // { System.out.println("Client Say:"+clientSay); //clientSay= br.readLine(); //} socket.shutdownInput(); //發送信息給客戶端 OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os); pw.print(clientSay.toUpperCase()); pw.flush(); pw.close(); os.close(); br.close(); isr.close(); is.close(); socket.close(); serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } }
Client類所作的事:get
1.建立socket,指定主機地址,和端口號:it
Socket socket = new Socket("127.0.0.1", 8888);
2.用輸出流給指定的主機在控制檯輸入索要發送字母:io
OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String sendInfo = br.readLine(); pw.println(sendInfo);//注意換行,否則會出錯,至於緣由目前還不清楚,糾結。。。 pw.flush();
3.用輸入流接受主機發過來的數據:
InputStream is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br1 = new BufferedReader(isr); String serverSay = br1.readLine(); System.out.println("Server Say:"+serverSay);
4.關閉資源:
br.close(); pw.close(); os.close(); socket.close();
完整代碼:
package com.net; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; public class Client { public static void main(String[] args) { try { Socket socket = new Socket("127.0.0.1", 8888); //給服務器發送消息 OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String sendInfo = br.readLine(); //while(sendInfo!=null) //{ pw.println(sendInfo); //} pw.flush(); //接受服務端信息 InputStream is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br1 = new BufferedReader(isr); String serverSay = br1.readLine(); System.out.println("Server Say:"+serverSay); br.close(); pw.close(); os.close(); socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
但願能給有須要的人到來幫助,有不當之處,還請你們多包涵,與指教。