Socket網路程式設計:基於TCP多執行緒通訊
阿新 • • 發佈:2019-02-05
第一步:編寫啟動服務端的執行緒類
第二步:程式設計服務端package socket; 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; public class ServerThread extends Thread { Socket socket = null; public ServerThread(Socket socket) { this.socket = socket; } @Override public void run() { InputStream is =null; InputStreamReader isr=null; BufferedReader reader=null; String response=null; OutputStream out=null; PrintWriter pw =null; try { is = socket.getInputStream(); isr = new InputStreamReader(is); reader = new BufferedReader(isr,1024); String info=null; while((info=reader.readLine())!=null){ System.out.println(info); } socket.shutdownInput(); response = "我是服務端,歡迎向服務端請求"; out = socket.getOutputStream(); pw= new PrintWriter(out); pw.write(response); pw.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { if(pw!=null) pw.close(); if(out!=null) out.close(); if(reader!=null) reader.close(); if(isr!=null) isr.close(); if(is!=null) is.close(); if(socket!=null) socket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
package socket; import java.io.BufferedReader; import java.io.IOException; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; public class Servers { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(8888); System.out.println("****************服務端啟動******************"); int count =0; while(true){ Socket socket = serverSocket.accept(); ServerThread serverThread = new ServerThread(socket); count ++; serverThread.start(); System.out.println(InetAddress.getLocalHost()+"***********"); } /* InputStream is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader reader = new BufferedReader(isr,1024); String info=null; while((info=reader.readLine())!=null){ System.out.println(info); } socket.shutdownInput(); String response = "我是服務端,歡迎向服務端請求"; OutputStream out = socket.getOutputStream(); PrintWriter pw = new PrintWriter(out); pw.write(response); pw.flush(); pw.close(); out.close(); reader.close(); isr.close(); is.close(); socket.close(); serverSocket.close();*/ } }
最後:程式設計客戶端
package socket; 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 Clients { public static void main(String[] args) throws UnknownHostException, IOException { Socket socket = new Socket("localhost", 8888); OutputStream out = socket.getOutputStream(); PrintWriter pw = new PrintWriter(out); pw.write("我是客戶端2*********fsdfsdgds******"); pw.flush(); socket.shutdownOutput(); InputStream is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String info =null; while((info=br.readLine())!=null){ System.out.println(info); } br.close(); isr.close(); is.close(); pw.close(); out.close(); socket.close(); } }