服务器连接设计
服务器线程设计
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;
}
@Override
public 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;
}
@Override
public 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();
}
}
}
}
}