首页 文章

Java中的KnockKnockServer

提问于
浏览
0

我是java网络的新手,我正在尝试在没有GUI的情况下在java中创建一个名为即时消息的服务器应用程序 . 因此,每当我运行程序时,它会说“在方法类中找不到主方法,请将main方法定义为:public static void main(String [] args)或JavaFX应用程序类必须扩展javafx.application.Application”-ECLIPSE

请帮我解决我的代码中出了什么问题 .

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;

//第一个文件//
公共类主{

public static void main (String[] args) {
    Server s=new Server();
    s.runningserver();

    }
}

//第二个文件//
公共类Server {

private ObjectOutputStream output;
    private ObjectInputStream input;
    private ServerSocket server;
    private Socket connection;

    //wait For Connection,then display connection information
            private void waitforConnection() {
                System.out.println("wait for Someone to Connect.....\n");
                try {
                    connection=server.accept();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    System.out.println("error In Acceptance of Server!!\n...");
                }
            System.out.println(("Connection      Established"+connection.getInetAddress().getHostName()));

            }


            //Setting Up Streams to Get Input and Output

            private void setupStreams(){  
                try {
                    output=new ObjectOutputStream(connection.getOutputStream());
                    output.flush();
                    input=new ObjectInputStream(connection.getInputStream());
                System.out.println("Your Streams are Perfectly Working...");


                } catch (IOException e) {
                    // TODO Auto-generated catch block

                    System.err.println("Error Found! in Streaming Connectionos");
                    e.printStackTrace();
                }
            }

            // While Chatting Method....!!//
                private void whileChatting() throws IOException{
               String Message="You are now Connected!!\n";
               sendMessage(Message);

               //abletoType(true);
               do{
                   try{
                   Message=(String) input.readObject();
                   System.out.println("\n"+Message);
               }       
                catch(ClassNotFoundException e ){
                    System.out.println("wtf---Fuck\n YOu\n Bloody\n HAcker!!!\n");
                }



               }
                  while(!Message.equals("CLIENT--END"));

                    }
                // Closing All Streams and Socket after you are done//
                private void closeCrap(){
                    System.out.println("\nClosing Connection...........Bye Bye\n");
                    //abletoType(false);
                    try {
                        output.close();
                        input.close();
                        connection.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
        System.out.println("Couldn't Close Connections!");
                    }

                }
                //Sending Messages to Client
                private void sendMessage(String message){
                    try {

                        output.writeObject("SERVER--- "+message);

                        output.flush();
            System.out.println("\nServer- "+message);

                    } catch (IOException e) {
                        // TODO Auto-generated catch block




                    e.printStackTrace();
        System.out.println("Dude I cant Send yeaah..");
                    }

                }






    // Setting up the Server

public void runningserver(){
        try {
            server=new ServerSocket(4444,100);
            while(true){try{
                //connect and Have connection
                waitforConnection();
                setupStreams();
                whileChatting();
            }
            finally{
                closeCrap();
            }
            }   
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }



        }




    }

2 回答

  • 0

    编辑:这是解决方案,我检查了它,对我来说它工作(运行MainClass.java文件!):// MainClass.java文件:

    public class MainClass {
        public static void main (String[] args) {
        Server s=new Server();
        s.runningserver();
        } 
    }
    

    //Server.java文件:

    import java.io.IOException;
    
    import java.io.ObjectInputStream;
    
    import java.io.ObjectOutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class Server {
    
        private ObjectOutputStream output;
        private ObjectInputStream input;
        private ServerSocket server;
        private Socket connection;
    
        // wait For Connection,then display connection information
        private void waitforConnection() {
            System.out.println("wait for Someone to Connect.....\n");
            try {
                connection = server.accept();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                System.out.println("error In Acceptance of Server!!\n...");
            }
            System.out.println(("Connection      Established" + connection
                    .getInetAddress().getHostName()));
    
        }
    
        // Setting Up Streams to Get Input and Output
    
        private void setupStreams() {
            try {
                output = new ObjectOutputStream(connection.getOutputStream());
                output.flush();
                input = new ObjectInputStream(connection.getInputStream());
                System.out.println("Your Streams are Perfectly Working...");
    
            } catch (IOException e) {
                // TODO Auto-generated catch block
    
                System.err.println("Error Found! in Streaming Connectionos");
                e.printStackTrace();
            }
        }
    
        // While Chatting Method....!!//
        private void whileChatting() throws IOException {
            String Message = "You are now Connected!!\n";
            sendMessage(Message);
    
            // abletoType(true);
            do {
                try {
                    Message = (String) input.readObject();
                    System.out.println("\n" + Message);
                } catch (ClassNotFoundException e) {
                    System.out.println("wtf---Fuck\n YOu\n Bloody\n HAcker!!!\n");
                }
    
            } while (!Message.equals("CLIENT--END"));
    
        }
    
        // Closing All Streams and Socket after you are done//
        private void closeCrap() {
            System.out.println("\nClosing Connection...........Bye Bye\n");
            // abletoType(false);
            try {
                output.close();
                input.close();
                connection.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                System.out.println("Couldn't Close Connections!");
            }
    
        }
    
        // Sending Messages to Client
        private void sendMessage(String message) {
            try {
    
                output.writeObject("SERVER--- " + message);
    
                output.flush();
                System.out.println("\nServer- " + message);
    
            } catch (IOException e) {
                // TODO Auto-generated catch block
    
                e.printStackTrace();
                System.out.println("Dude I cant Send yeaah..");
            }
    
        }
    
        // Setting up the Server
    
        public void runningserver() {
            try {
                server = new ServerSocket(4444, 100);
                while (true) {
                    try {
                        // connect and Have connection
                        waitforConnection();
                        setupStreams();
                        whileChatting();
                    } finally {
                        closeCrap();
                    }
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
    }
    

    我可以毫无例外地运行它 .

    问题是你的主要方法

    public static void main (String[] args) {}
    

    不在您运行它的类中 .

    //separate file A.java
    public class A
    {}
    
    //separate file B.java
    public class B
    {
        public static void main (String[] args) {}
    
    }
    

    如果你现在运行B,它可以工作,因为B.java有一个main方法 . 但是:如果你运行A.java它说:没有找到主要的方法 . 要运行的文件(A,B等必须定义主方法)如果运行java文件,它将查找main方法(开始执行点) .

  • 2

    主要方法必须是类的方法:

    import java.net.Socket;
    
    public class Server {
    
        public static void main (String[] args) {
          Server s=new Server();
          s.runningserver();
        }
    

    所以必须在课堂宣言之后 .

相关问题