服务器连接设计
服务器线程设计
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;import java.util.Scanner;/*** 发送消息线程*/class Send1 extends Thread{private Socket socket;private Scanner scanner;public Send1(Socket socket,Scanner scanner){this.socket=socket;this.scanner=scanner;}@Overridepublic void run() {this.sendMsg();}//发送消息的方法private void sendMsg(){PrintWriter printWriter = null;try{printWriter=new PrintWriter(this.socket.getOutputStream());while(true){String str = scanner.nextLine();printWriter.println(str);printWriter.flush();}}catch (Exception e){e.printStackTrace();}finally{if(scanner!=null){scanner.close();}if(printWriter!=null){printWriter.close();}if(socket!=null){try {socket.close();} catch (IOException e) {e.printStackTrace();}}}}}/*** 接收消息的线程*/class Receive1 extends Thread{private Socket socket;public Receive1(Socket socket){this.socket=socket;}@Overridepublic void run() {this.receive();}//接收消息的方法private void receive(){BufferedReader bufferedReader = null;try{bufferedReader=new BufferedReader(new InputStreamReader(this.socket.getInputStream()));while(true){String str=bufferedReader.readLine();System.out.println("对方说:"+str);}}catch (Exception e){e.printStackTrace();}finally {if(bufferedReader!=null){try {bufferedReader.close();} catch (IOException e) {e.printStackTrace();}}if(socket!=null){try {socket.close();} catch (IOException e) {e.printStackTrace();}}}}}public class ChartSocketOptimization {public static void main(String[] args) {Scanner scanner = null;ServerSocket serverSocket = null;Socket socket = null;try{scanner=new Scanner(System.in);System.out.println("请输入:server,<port>或者<ip>,<port>");String str = scanner.nextLine();String[] arr=str.split(",");if("server".equals(arr[0])){System.out.println("服务端开始监听:"+arr[1]+"......");serverSocket=new ServerSocket(Integer.parseInt(arr[1]));socket=serverSocket.accept();System.out.println("连接成功!!");}else{socket=new Socket(arr[0],Integer.parseInt(arr[1]));System.out.println("连接成功");}new Send1(socket,scanner).start();new Receive1(socket).start();}catch (Exception e){e.printStackTrace();}finally {if(serverSocket!=null){try {serverSocket.close();} catch (IOException e) {e.printStackTrace();}}}}}
