首页 > 解决方案 > 打开套接字时,我的程序似乎什么都不做

问题描述

  public static void main(String args[]) {
        boolean isServer=true;
        int port=4000;
        try{
            if(isServer==true){
                new Server(port);
                //starta server
            }
            if(isServer==false){
                new Client(port);
            }}
        catch(IOException e){
            System.out.println("could not start chat");
        }
       
    }
}
class Server{
    ServerSocket server;
    Socket socket;
    Server(int port) throws IOException{
    server = new ServerSocket(port);
    
    socket = server.accept(); 
    System.out.println("got here");
    new ChatParticipant(socket);
    server.close();
    

}}

所以我有这个程序,它应该开始两个人之间的聊天,但是当我第一次尝试启动服务器时,我似乎没有得到我的第一个打印语句,而且我似乎也从来没有开始我的 chatparticipant 类。问题似乎与 socket=Server.accepts() 的初始化有关,就好像我在它打印出来之前放置了我的打印语句。我该如何解决?

标签: java

解决方案


该函数server.accept()会阻止您的代码,直到客户端连接到您的服务器。我敢打赌这不会发生在您的实际测试设置中。

https://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html#accept() https://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html#accept()


推荐阅读