Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java套接字编程对话_Java_Sockets_Client Server - Fatal编程技术网

java套接字编程对话

java套接字编程对话,java,sockets,client-server,Java,Sockets,Client Server,hi all我想在服务器和客户端之间进行java套接字对话,它与第一条消息一起工作,然后对话停止。在我的情况下,我想从客户端发送hi消息并从服务器接收hi消息,然后服务器还必须发送另一条消息“输入要检查的数字”,并等待输入 我的客户代码是: public class ClientSide { /** * @param args * @throws Exception */ public static void main(String[] args)

hi all我想在服务器和客户端之间进行java套接字对话,它与第一条消息一起工作,然后对话停止。在我的情况下,我想从客户端发送hi消息并从服务器接收hi消息,然后服务器还必须发送另一条消息“输入要检查的数字”,并等待输入

我的客户代码是:

public class ClientSide {
    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception{
        ClientSide clientSideInstance = new ClientSide();
        clientSideInstance.run();
    }

    /**
     * @throws Exception
     */
    public void run() throws Exception{

        Socket soc = new Socket("localhost",4321);
        PrintStream printStream = new PrintStream(soc.getOutputStream());
        printStream.println("hi");
        InputStreamReader Inputreader = new InputStreamReader(soc.getInputStream());
        BufferedReader bufferedReader = new BufferedReader(Inputreader);
        String receivedMsg =  bufferedReader.readLine();
        System.out.println(receivedMsg);
    }
}
我的服务器代码是:

public class ServerSide {
    private PrintStream printStream;

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception{
        ServerSide serverSideInstance = new ServerSide();
        serverSideInstance.run();
    }

    /**
     * @throws Exception
     */
    public void run() throws Exception{

        ServerSocket socket = new ServerSocket(4321);
        Socket soc = socket.accept();
        InputStreamReader Inputreader = new InputStreamReader(soc.getInputStream());
        BufferedReader bufferedReader = new BufferedReader(Inputreader);

        String receivedMsg =  bufferedReader.readLine();
        System.out.println(receivedMsg);

        // parsing client massage 
        if(receivedMsg.trim().equalsIgnoreCase("hi")){

            printStream = new PrintStream(soc.getOutputStream());
            printStream.println("hi");

            printStream.println("enter number to check ");

            InputStreamReader InputreaderForPrimeNumber = new InputStreamReader(soc.getInputStream());
            BufferedReader bufferedReaderForPrimeNumber = new BufferedReader(InputreaderForPrimeNumber);
            String number = bufferedReaderForPrimeNumber.readLine();

            if(isPrime(Integer.parseInt(number))){
                printStream.println("yes - it is Prime number :)");
            }else{
                printStream.println("No - it is not a Prime number :(");
            }

        }
    }

    private boolean isPrime(int n) {
        for(int i=2;i<n;i++) {
            if(n%i==0)
                return false;
        }
        return true;
    }
}
公共类服务器端{
私有打印流打印流;
/**
*@param args
*@抛出异常
*/
公共静态void main(字符串[]args)引发异常{
ServerSide serverSideInstance=新的ServerSide();
serverSideInstance.run();
}
/**
*@抛出异常
*/
public void run()引发异常{
ServerSocket=新的ServerSocket(4321);
Socket soc=Socket.accept();
InputStreamReader Inputreader=新的InputStreamReader(soc.getInputStream());
BufferedReader BufferedReader=新的BufferedReader(Inputreader);
字符串receivedMsg=bufferedReader.readLine();
系统输出打印项次(接收DMSG);
//解析客户端消息
if(receivedMsg.trim().equalsIgnoreCase(“hi”)){
printStream=新的printStream(soc.getOutputStream());
printStream.println(“hi”);
printStream.println(“输入要检查的编号”);
InputStreamReader InputreaderForPrimeNumber=新的InputStreamReader(soc.getInputStream());
BufferedReader bufferedReaderForPrimeNumber=新的BufferedReader(InputreaderForPrimeNumber);
字符串编号=bufferedReaderForPrimeNumber.readLine();
if(isPrime(Integer.parseInt(number))){
printStream.println(“是-它是素数:)”;
}否则{
printStream.println(“否-它不是质数:(”);
}
}
}
私有布尔iPrime(int n){

对于(int i=2;i您有一些错误,并且实现实际上还没有完成。
这是您的固定代码。另外,请注意1不是一个质数。
当客户端发送“再见”而不是数字时,对话结束。

服务器:

        import java.io.BufferedReader;
        import java.io.InputStreamReader;
        import java.io.PrintStream;
        import java.net.ServerSocket;
        import java.net.Socket;

        public class ServerSide {
            private PrintStream printStream;

            /**
             * @param args
             * @throws Exception
             */
            public static void main(String[] args) throws Exception{
                ServerSide serverSideInstance = new ServerSide();
                serverSideInstance.run();
            }

            /**
             * @throws Exception
             */
            public void run() throws Exception{

                ServerSocket socket = new ServerSocket(4321);
                Socket soc = socket.accept();
                InputStreamReader Inputreader = new InputStreamReader(soc.getInputStream());
                BufferedReader bufferedReader = new BufferedReader(Inputreader);

                printStream = new PrintStream(soc.getOutputStream());

                while (true){
                    String receivedMsg =  bufferedReader.readLine();
                    System.out.println(receivedMsg);

                    // parsing client massage 
                    if(receivedMsg.trim().equalsIgnoreCase("hi")){
                        printStream.println("hi");
                        printStream.println("enter number to check: ");
                    }else if (receivedMsg.trim().equalsIgnoreCase("bye")){
                        // printStream.println("bye");
                        break;
                    }else{
                        if(isPrime(Integer.parseInt(receivedMsg))){
                            printStream.println("Yes - it is a prime number :)");
                        }else{
                            printStream.println("No - it is not a prime number :(");
                        }
                        printStream.println("enter number to check: ");
                    }
                }
            }

            private boolean isPrime(int n) {
                if (n==1) return false;

                for(int i=2;i<n;i++) {
                    if(n%i==0){
                        return false;
                    }
                }
                return true;
            }

        }
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.PrintStream;
    import java.net.Socket;

    public class ClientSide {
        /**
         * @param args
         * @throws Exception
         */
        public static void main(String[] args) throws Exception{
            ClientSide clientSideInstance = new ClientSide();
            clientSideInstance.run();
        }

        /**
         * @throws Exception
         */
        public void run() throws Exception{
            BufferedReader brr = new BufferedReader(new InputStreamReader(System.in));
            Socket soc = new Socket("localhost", 4321);
            PrintStream printStream = new PrintStream(soc.getOutputStream());
            printStream.println("hi");

            InputStreamReader Inputreader = new InputStreamReader(soc.getInputStream());
            BufferedReader bufferedReader = new BufferedReader(Inputreader);
            String receivedMsg =  bufferedReader.readLine().trim();
            System.out.println(receivedMsg);

            while (true){
                receivedMsg =  bufferedReader.readLine();
                System.out.println(receivedMsg);

                if (receivedMsg.equalsIgnoreCase("enter number to check: ")){
                    String userMessage = brr.readLine().trim(); // read from stdin
                    printStream.println(userMessage); // send message/number to server
                    if (userMessage.equalsIgnoreCase("bye")){
                        break;
                    }
                    receivedMsg =  bufferedReader.readLine().trim();
                    System.out.println(receivedMsg);
                }
            }
        }
    }