是否可以在同一台计算机上运行套接字服务器和套接字客户端?

发布于 2021-01-30 17:58:11

在Java中,可以创建套接字服务器和套接字客户端,是否可以运行套接字服务器的实例以及从同一台计算机上的套接字服务器接收数据的套接字/服务器客户端?

例如,套接字服务器在端口60010上运行,套接字客户端在通过套接字连接到该端口的同一台计算机上运行,​​还是我需要一台新计算机并将其添加到网络中?如果它在TCP
/ IP层上运行时具有唯一的IP地址和端口号。

关注者
0
被浏览
109
1 个回答
  • 面试哥
    面试哥 2021-01-30
    为面试而生,有面试问题,就找面试哥。

    这是一个简单的可运行示例,可以帮助您入门。它开始两个线程,一个以a开头,一个ServerSocket建立Socket连接。一个连续发送字符串,另一个连续打印字符串。

    您应该可以直接按原样运行此类。

    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();
        }
    }
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看