簡體   English   中英

在主調用方法時遇到麻煩? 簡單的客戶端/服務器

[英]trouble calling methods in main? simple Client/server

注意: 我的第一個StackOverFlow POST! WHOOOP!

大家好,所以我建立了一個簡單的客戶端服務器程序,該程序只接收一個字符串然后返回它,但是由於某種原因,我無法讓我的主體正確地調用這些方法,而且我不明白為什么它不起作用。 有人可以看看我是否想念/做錯了什么。 我知道我建立網絡的邏輯是扎實的,但電話不是。 我認為現在該換新鮮的眼睛了,對您有幫助! 謝謝。

主要:

public class FileRetrieve_Easy_main 
{
   public static void main(String[] args)
   {    
       new Thread(new SimpleServer()).start();
       new Thread(new SimpleClient()).start();

  }
}

客戶:

import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

    public class Client 
    {
        public static class SimpleClient implements Runnable 
        {
            @Override
            public void run() 
            {
                Socket socket = null;
                try 
                {
                    Thread.sleep(3000);
                    socket = new Socket("localhost", 3333);
                PrintWriter outWriter = new PrintWriter(socket.getOutputStream(),true);
                outWriter.println("Hello Mr. Server!");

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

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

            } 
            catch (IOException e) 
            {

            }
            finally
            {
                try 
                {
                    socket.close();

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

                }

           }
     }// end run 

       }//end simple client

    }

服務器:

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

    public class Server 
    {
        public static class SimpleServer implements Runnable 
        {
            @Override
            public void run()   
            {
                ServerSocket serverSocket = null;
                while (true) 
                {
                    try 
                    {
                        serverSocket = new ServerSocket(3333);
                        Socket clientSocket = serverSocket.accept();    
                        BufferedReader inputReader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

                        System.out.println("Client said :"+inputReader.readLine());
                     } 
                     catch (IOException e) 
                     {
                         e.printStackTrace();
                     }
                     finally
                     {
                        try 
                        {
                            serverSocket.close();

                        } 
                        catch (IOException e) 
                        {
                            e.printStackTrace();
                        }
                    }
                }//end while
            }// end run

        }//end simple server

    }//end class

您的服務器Runnable的名稱為Server.SimpleServer。 客戶端Runnable的名稱為Client.SimpleClient。 您使它們成為嵌套類,您可以在這里閱讀: https : //docs.oracle.com/javase/tutorial/java/javaOO/nested.html

是否所有類都在默認軟件包中?

如果您這樣做:

public class FileRetrieve_Easy_main 
{
   public static void main(String[] args)
   {    
       new Thread(new Server.SimpleServer()).start();
       new Thread(new Client.SimpleClient()).start();

  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM