package com.wzy.Test; 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; /** * * @author wzy *服务器线程处理类 */ public class ServerThread extends Thread { //和本线程相关的Socket Socket socket; public ServerThread(Socket socket){ this.socket = socket; } public void run(){ PrintWriter pw=null; OutputStream out=null; BufferedReader br=null ; InputStreamReader isr=null; InputStream is=null; try{ is = socket.getInputStream();//字节输入流 //将字节流转换为字符流 isr = new InputStreamReader(is); //为输入流添加缓冲 br = new BufferedReader(isr); String info = ""; String info1 = null; while((info = br.readLine())!=null){ //循环读取客户端信息 System.out.println("服务器接收到客户端的信息为: "+info); info1 = info; } System.out.println(info1); //关闭输入流 socket.shutdownInput(); //4获取输出流,响应客户端的请求 out = socket.getOutputStream(); pw = new PrintWriter(out); pw.write("你好,客户端,我是服务器!"); pw.flush(); //5.关闭资源 } catch(Exception e){ e.printStackTrace(); } finally{ try{ if(pw!=null){pw.close();} if(out!=null){out.close();} if(br!=null){br.close();} if(isr!=null){isr.close();} if(is!=null){is.close();} if(socket!=null){socket.close();} } catch(IOException e){ e.printStackTrace(); } } } }
package com.wzy.Test; 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.InetAddress; import java.net.ServerSocket; import java.net.Socket; /** * * @author wzy *服务器 */ public class Server { public static void main(String[] args) { int count = 0; //for(int a = 0;a<5;a++){ try { //1.创建一个服务器端socket,即ServerSocket,指定绑定的端口,并监听 ServerSocket serverSocket = new ServerSocket(8888);//监听8888端口 System.out.println("服务器等待客户端连接...."); //2.调用accept开始监听,等待客户端连接 Socket socket =null; while(true){ socket = serverSocket.accept();//接受 ServerThread serverThread = new ServerThread(socket); serverThread.start(); System.out.println("客户连接数量:"+(++count)); InetAddress address = socket.getInetAddress(); System.out.println("客户端ip:"+address.getHostAddress()); }/* //3.获取输入流,并读取客户端信息 InputStream is = socket.getInputStream();//字节输入流 //将字节流转换为字符流 InputStreamReader isr = new InputStreamReader(is); //为输入流添加缓冲 BufferedReader br = new BufferedReader(isr); String info = ""; String info1 = null; while((info = br.readLine())!=null){ //循环读取客户端信息 System.out.println("服务器接收到客户端的信息为: "+info); info1 = info; } System.out.println(info1); //关闭输入流 socket.shutdownInput(); //4获取输出流,响应客户端的请求 OutputStream out = socket.getOutputStream(); PrintWriter pw = new PrintWriter(out); pw.write("你好,客户端,我是服务器!"); pw.flush(); //5.关闭资源 pw.close(); out.close(); br.close(); isr.close(); is.close(); socket.close(); serverSocket.close();*/ } catch (Exception e) { e.printStackTrace(); } } //} }
package com.wzy.Test; 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; /** * * @author wzy *客户端 */ public class Client { public static void main(String[] args) { try { //1.创建客户端socket,指定服务器地址和端口 Socket socket = new Socket("127.0.0.1", 8888); //2.获取输出流,向服务器发送信息 OutputStream os = socket.getOutputStream();//字节输出流 PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流 pw.write("hello,服务器!!!,我是客户端"); pw.flush();//刷新缓存 socket.shutdownOutput();//关闭输出流 //3.获取输入流,读取服务器的响应 InputStream in = socket.getInputStream(); InputStreamReader inr = new InputStreamReader(in); BufferedReader brr = new BufferedReader(inr); String info = null; while((info =brr.readLine())!=null){ System.out.println("客户端接到服务器的消息: "+info); } brr.close(); inr.close(); in.close(); //4.关闭资源 pw.close(); os.close(); socket.close(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }