Is it possible to run a socket server and socket client on the same machine?

后端 未结 4 957
迷失自我
迷失自我 2020-12-05 07:41

In java it is possible to create a socket server and a socket client, is it possible to have an instance of the socket server running and a socket/server client that is rece

相关标签:
4条回答
  • 2020-12-05 08:19

    Here's a simple runnable example to get you started. It starts two threads, one with a ServerSocket and one which makes a Socket connection. One continuously sends strings and the other prints them.

    You should simply be able to run this class as-is.

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    public class SocketTest {
        public static void main(String[] args) throws IOException {
    
            startServer();
            startSender();
        }
    
        public static void startSender() {
            (new Thread() {
                @Override
                public void run() {
                    try {
                        Socket s = new Socket("localhost", 60010);
                        BufferedWriter out = new BufferedWriter(
                                new OutputStreamWriter(s.getOutputStream()));
    
                        while (true) {
                            out.write("Hello World!");
                            out.newLine();
                            out.flush();
    
                            Thread.sleep(200);
                        }
    
                    } catch (UnknownHostException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    
        public static void startServer() {
            (new Thread() {
                @Override
                public void run() {
                    ServerSocket ss;
                    try {
                        ss = new ServerSocket(60010);
    
                        Socket s = ss.accept();
    
                        BufferedReader in = new BufferedReader(
                                new InputStreamReader(s.getInputStream()));
                        String line = null;
                        while ((line = in.readLine()) != null) {
                            System.out.println(line);
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    }
    
    0 讨论(0)
  • 2020-12-05 08:23

    Yes, you can have the following on the same machine:

    ServerSocket server = new ServerSocket(60010);
    Socket client = server.accept();
    

    Somewhere else:

    Socket socket = new Socket("localhost", 60010);
    PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
    out.println("Hello server");
    
    0 讨论(0)
  • 2020-12-05 08:27

    Yes, you can run a client and server on the same machine. I do it all the time for development. If you are having troubles though, some routers have problems forwarding packets back to themselves. Try using localhost instead of your external IP for development.

    0 讨论(0)
  • 2020-12-05 08:39

    Yes it is completely possible. Every OS has a loopback interface. You can have multiple clients connect to one server on your computer. This kind of communication takes place over the loopback interface.

    0 讨论(0)
提交回复
热议问题