socket双向通信
客户端
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.InetAddress;import java.net.Socket;import java.net.UnknownHostException;public class Client { public static void main(String[] args) { Socket socket = null; BufferedReader in = null; BufferedWriter out = null; BufferedReader wt = null; try { //创建Socket对象,指定服务器端的IP与端口 socket = new Socket(InetAddress.getLocalHost(), 8888); //获取scoket的输入输出流接收和发送信息 in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); wt = new BufferedReader(new InputStreamReader(System.in)); while (true) { //发送信息 String str = wt.readLine(); out.write(str + "\n"); out.flush(); //如果输入的信息为“end”则终止连接 if (str.equals("end")) { break; } //否则,接收并输出服务器端信息 System.out.println("服务器端说:" + in.readLine()); } } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { // 关闭资源 if (out != null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } if (wt != null) { try { wt.close(); } catch (IOException e) { e.printStackTrace(); } } if (socket != null) { try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } }}服务端
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.ServerSocket;import java.net.Socket;public class Server { public static void main(String[] args){ Socket socket = null; BufferedReader in = null; BufferedWriter out = null; BufferedReader br = null; try { //创建服务器端套接字:指定监听端口 ServerSocket server = new ServerSocket(8888); //监听客户端的连接 socket = server.accept(); //获取socket的输入输出流接收和发送信息 in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); br = new BufferedReader(new InputStreamReader(System.in)); while (true) { //接收客户端发送的信息 String str = in.readLine(); System.out.println("客户端说:" + str); String str2 = ""; //如果客户端发送的是“end”则终止连接 if (str.equals("end")){ break; } //否则,发送反馈信息 str2 = br.readLine(); // 读到\n为止,因此一定要输入换行符! out.write(str2 + "\n"); out.flush(); } } catch (IOException e) { e.printStackTrace(); } finally { //关闭资源 if(in != null){ try { in.close(); } catch (IOException e) { e.printStackTrace(); } } if(out != null){ try { out.close(); } catch (IOException e) { e.printStackTrace(); } } if(br != null){ try { br.close(); } catch (IOException e) { e.printStackTrace(); } } if(socket != null){ try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } }}

浙公网安备 33010602011771号