• QQ_MultiTalkServer


    package test_teacher;

    import java.net.*;
    import java.io.*;

    public class MultiTalkServer
    {
        public static void main(String[] args) throws IOException
        {
            ServerSocket serverSocket = null;
            boolean listening = true;
        int clientNumber = 0;

            try {
                serverSocket = new ServerSocket(4444);
            }
            catch (IOException e){
                System.err.println("Could not listen on port: 4444.");
                System.exit(-1);
            }

            while (listening)
        {
            Socket socket;
            socket = serverSocket.accept();  //程序将在此等候客户端的连接
            clientNumber++;
            new MultiTalkServerThread(socket, clientNumber).start();
        }
            serverSocket.close();
        }
    }

    class MultiTalkServerThread extends Thread
    {
        private Socket socket = null;
        private int clientNumber;

        public MultiTalkServerThread(Socket socket, int clientNumber)
        {
            super("MultiTalkServerThread");
            this.socket = socket;
            this.clientNumber = clientNumber;
            System.out.println("Accept Client" + clientNumber);
        }

        public void run()
        {

            try {
                PrintWriter out = new PrintWriter(socket.getOutputStream(), true);  //auto flush
                BufferedReader in = new BufferedReader(
                            new InputStreamReader(
                            socket.getInputStream()));

                BufferedReader sin = new BufferedReader( new InputStreamReader( System.in ) );

                String sinputLine, inputLine;
                boolean sinbye = false;
                boolean inbye = false;
                        
                inputLine = in.readLine();
                System.out.println( "from Client" + clientNumber + ": " + inputLine );

                while( true )
                {
                    if(inputLine.equals("Bye."))
                    {
                        inbye = true;
                        sinbye = true;
                        sinputLine = "Bye.";
                        out.println(sinputLine);
                        out.flush();
                        System.out.println("Server: " + "Reply to client " + clientNumber +" : " + sinputLine);
                    }
                    else
                    {
                        sinputLine = "Reply to client " + clientNumber +" : " + inputLine;
                        out.println(sinputLine);
                        out.flush();
                        System.out.println("Server: " + sinputLine);
                    }

                    if( sinbye == true && inbye == true )
                        break;

                    if( inbye == false )
                    {
                        inputLine = in.readLine();
                        System.out.println( "form Client " + clientNumber + ": " + inputLine );
                    }
                }

                out.close();
                in.close();
                socket.close();

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

  • 相关阅读:
    RobotFramework下的http接口自动化Get关键字的使用
    通过添加filter过滤器 彻底解决ajax 跨域问题
    TestLink和RedMine的集成
    SonarQube和Maven的集成
    RobotFramework下的http接口自动化Create Http Context关键字的使用
    正负数的源码 反码 补码 转
    SSM的,日常错误
    SSM的 日常错误 之 mybatis
    Eclipse无法启动报An internal error occurred during: "reload maven project". java.lang.NullPointerException
    错误异常
  • 原文地址:https://www.cnblogs.com/acm-icpcer/p/6601501.html
Copyright © 2020-2023  润新知