A classic JAVA multi-threaded TCP server can be used for a variety of network test

A classic JAVA multi-threaded TCP server can be used for a variety of network test

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.lang.management.ThreadInfo;
import java.net.ServerSocket;
import java.net.Socket;

public class Server  {
	

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("开始监控端口10000");
		Server server = new Server();				
	} 
	public Server() {
		Listen();
	}
	public void Listen() {
		// 保存读入的字符串
		String str;
		try {
			//建立服务端套接字
			ServerSocket s = new ServerSocket(10000);
			System.out.println("监听成功" + s);
			while (true) {
				// 监听,接受客户端的连接请求
				Socket socket = s.accept();				 
				System.out.println("接受连接: " + socket);
				System.out.println("开始一个新线程");
				Handler handler=new Handler(socket); 
				handler.run();				 
			}
		} catch (Exception ex) {
			System.out.println("服务器监听端口失败!");
			System.exit(0);
		}
	}
}
class Handler implements Runnable{
	Socket socket;
	//DataInputStream in;
	//DataOutputStream out;
	BufferedReader in;
	BufferedWriter out;
	public String hello = "Hello! I am server";
	public Handler(Socket socket)throws IOException
	{		 
		this.socket=socket;
		//in=new DataInputStream(new BufferedInputStream(socket.getInputStream()));
		//out=new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));	
		in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
		out=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));		
	}
	@Override
	public void run() {
		// TODO Auto-generated method stub
		try{
			//out.writeUTF(hello);
			out.write(hello);
			out.flush();
			while(true)
			{
				//String msg=in.readUTF();	
				String msg=in.readLine();
				if(msg==null) {
					System.out.println("客户端离开");
					//socket.close();
					return;
				}					
				System.out.println(socket.toString()+" said:" + msg);	
				out.write(hello);
				out.flush();
			}
		}catch (Exception e) {
			// TODO: handle exception
			System.out.println("连接错误,可能客户端已关闭!");
		}finally {
			try {
				socket.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				//e.printStackTrace();
			}
		}
	}
	
}
Published 48 original articles · won praise 3 · views 20000 +

Guess you like

Origin blog.csdn.net/chscomfaner/article/details/103729931