Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 那么为什么不是';这不是真的开始了吗?服务器套接字和套接字_Java_Sockets - Fatal编程技术网

Java 那么为什么不是';这不是真的开始了吗?服务器套接字和套接字

Java 那么为什么不是';这不是真的开始了吗?服务器套接字和套接字,java,sockets,Java,Sockets,我正在尝试构建一个web服务器,然后将get、post、put和delete操作传递给它。一些基本和简单的东西 因此,我决定编写一个简单的web服务器,它可以执行以下操作: package aisisplatform.web; import aisisplatform.web.interfaces.*; import aisisplatform.web.exceptions.*; import java.net.*; import java.io.*; public class WebSer

我正在尝试构建一个web服务器,然后将get、post、put和delete操作传递给它。一些基本和简单的东西

因此,我决定编写一个简单的web服务器,它可以执行以下操作:

package aisisplatform.web;

import aisisplatform.web.interfaces.*;
import aisisplatform.web.exceptions.*;
import java.net.*;
import java.io.*;

public class WebServer implements WebServerInterface{

    private int bindToPort;
    private Socket socket;
    private ServerSocket serverSocket;

    public WebServer(int port){
        bind(port);
    }

    @Override
    public void bind(int port) throws WebServerException {
        if(port == 0 ){
            throw new WebServerException("Cannot bind to port specified");
        }

        bindToPort = port;
    }

    @Override
    public void start() throws WebServerException {
        try{
           System.out.println("Starting Web Server");
           serverSocket = new ServerSocket(bindToPort);
           socket = serverSocket.accept();
           System.out.println("localhost:" + bindToPort + " is active.");
        }catch(IOException e){
            throw new WebServerException(e);
        }
    }

    @Override
    public void stop() throws WebServerException {
        try{
            System.out.println("Stopping Web Server");
            serverSocket.close();
            socket.close();
            System.out.println("Web Server Stopped");
        }catch(IOException e){
            throw new WebServerException(e);
        }
    }

    @Override
    public void restart(){
        System.out.println("Stopping Web Server");
        stop();
        System.out.println("Web Server Stopped");
        System.out.println("Starting Web Server");
        start();
        System.out.println("localhost:" + bindToPort + " is active.");
    }   
}
然后用于:

package aisisplatform;

import aisisplatform.web.*;
import aisisplatform.web.exceptions.*;

public class AisisPlatform {

    private static String[] argumentsArray;

    public static void main(String[] args) {
        if(args.length > 0){
            argumentsArray = args[0].split("=");
            if(argumentsArray[0].equals("--port")){
                WebServer webServer = new WebServer(Integer.parseInt(argumentsArray[1]));
                switch (args[1]) {
                    case "start":
                        webServer.start();
                        break;
                    case "stop":
                        webServer.stop();
                        break;
                    case "restart":
                        webServer.restart();
                        break;
                    default:
                        throw new WebServerException("We only allow --port=xxxxx start | stop | restart ");
                }
            }
        }
    }

}
然后使用以下参数运行应用程序:
--port=xxxxx start | stop | restart
问题很简单。运行该应用程序会得到以下行:
System.out.println(“启动Web服务器”)然后它就停止了

我试过调试它,并播放了一遍,它设置了47000的端口,但它从未完成启动。。。Netbeans就像“我设置了服务器套接字,现在我完成了,请允许我挂在这里…”没有任何错误消息抛出

 socket = serverSocket.accept();
该方法会一直阻塞,直到建立连接为止。你应该使用分开的线程

该方法会一直阻塞,直到建立连接为止。你应该使用分开的线程

该方法会一直阻塞,直到建立连接为止。你应该使用分开的线程

该方法会一直阻塞,直到建立连接为止。你应该使用分开的线程

运行该应用程序会得到以下行:System.out.println(“启动Web”) 服务器“);然后它就停了

这是一个阻塞调用,在客户端实际连接到服务器之前不会返回

运行该应用程序会得到以下行:System.out.println(“启动Web”) 服务器“);然后它就停了

这是一个阻塞调用,在客户端实际连接到服务器之前不会返回

运行该应用程序会得到以下行:System.out.println(“启动Web”) 服务器“);然后它就停了

这是一个阻塞调用,在客户端实际连接到服务器之前不会返回

运行该应用程序会得到以下行:System.out.println(“启动Web”) 服务器“);然后它就停了


这是一个阻塞调用,在客户端实际连接到您的服务器之前不会返回…

,因为它正在等待建立连接。
检查ServerSocket.accept()方法注释
" 侦听与此套接字的连接并接受 该方法会一直阻塞,直到建立连接。”


您正在同一线程(主线程)中启动ServerSocket(侦听器)。因此,主线程将等待连接建立

,因为它正在等待连接需要建立。
检查ServerSocket.accept()方法注释
" 侦听与此套接字的连接并接受 该方法会一直阻塞,直到建立连接。”


您正在同一线程(主线程)中启动ServerSocket(侦听器)。因此,主线程将等待连接建立

,因为它正在等待连接需要建立。
检查ServerSocket.accept()方法注释
" 侦听与此套接字的连接并接受 该方法会一直阻塞,直到建立连接。”


您正在同一线程(主线程)中启动ServerSocket(侦听器)。因此,主线程将等待连接建立

,因为它正在等待连接需要建立。
检查ServerSocket.accept()方法注释
" 侦听与此套接字的连接并接受 该方法会一直阻塞,直到建立连接。”

您正在同一线程(主线程)中启动ServerSocket(侦听器)。因此,主线程将等待连接完成

Q:您是否尝试从客户端“连接”到端口47000?如果需要,可以在命令提示符下使用Windows
telnet localhost 47000
。它正在启动。它只是在你接受连接之前不会打印任何东西,也就是说,该消息位于错误的位置。是什么让你认为你不能使用零作为绑定端口?问:你是否尝试从客户端“连接”到47000端口?如果需要,可以在命令提示符下使用Windows
telnet localhost 47000
。它正在启动。它只是在你接受连接之前不会打印任何东西,也就是说,该消息位于错误的位置。是什么让你认为你不能使用零作为绑定端口?问:你是否尝试从客户端“连接”到47000端口?如果需要,可以在命令提示符下使用Windows
telnet localhost 47000
。它正在启动。它只是在你接受连接之前不会打印任何东西,也就是说,该消息位于错误的位置。是什么让你认为你不能使用零作为绑定端口?问:你是否尝试从客户端“连接”到47000端口?如果需要,可以在命令提示符下使用Windows
telnet localhost 47000
。它正在启动。它只是在你接受连接之前不会打印任何东西,也就是说,该消息位于错误的位置。是什么让您认为不能使用零作为绑定端口?
socket = serverSocket.accept();