构造函数 ServerSocket(int) 未定义

The constructor ServerSocket(int) is undefined

我是 JAVA 的新手,基本上我用 C++ 编写代码。最近我需要在JAVA套接字编程方面做点什么。但是我在 ServerSocket(..) 中遇到了一个奇怪的错误。我正在尝试在特定端口创建服务器套接字。为此,我的代码如下所示。

import java.net.*;
import java.io.*;
import java.util.*;


public class ServerSocket {

    static ServerSocket socket1;
    protected final static int port = 19999;
    static Socket connection;


    public static void main(String[] args) {
        try
        {
            socket1 = new ServerSocket(port);

        }
        catch (IOException e) {}

    }

}

但是我遇到了编译错误 "The constructor ServerSocket(int) is undefined"。谢谢

我先推荐一个 java 教程。只是为了了解基本的区别。

简而言之:

在 Java 中,所有内容都必须在 class 中。您定义了一个名为 'main' 的静态方法。这是您申请的开始。

这是您的示例(文件名:DemoClass.java):

import java.net.*;
import java.io.*;

public class DemoClass {

    private static ServerSocket socket1;
    private static final int port = 19999;

    private static void handleConnection(Socket socket) throws IOException {
        OutputStream out = socket.getOutputStream();
        // Say hello
        out.write("Hello World\n".getBytes());
        out.flush();
        // Close the connection
        out.close();
        socket.close();
    }

    // Use this exact method signature!
    public static void main(String[] args) {
        try {
            socket1 = new ServerSocket(port);
            // Here is some example what you could do
            Socket connection = socket1.accept();
            handleConnection(connection);
        } catch(IOException e) {
            // What should be done if this fails? E.g. port already in use
            e.printStackTrace();
        }
    }
}

但我真的建议 Java 和 Java 套接字教程。

您好!

请参阅我对您的原始问题的第二条评论:

Also, do you have your own class named ServerSocket?

您已将 class ServerSocket 命名为 Java 编译器正在寻找此 class 中的 构造函数,一个需要一个整数。重命名 class 这样就不会发生名称冲突,现在可以使用 Java 核心 ServerSocket class.

服务器程序在 try-with-resources 语句中创建 ServerSocket 对象:

  import java.io.*;
  import java.net.*;

  class Test{

    private static ServerSocket socket1;
    private final static int port = 19999;
    public static void main (String [] args){
     try{
        socket1 = new ServerSocket(port);
     }
     catch(IOException e){
        e.printStackTrace();
     }
   }
 }

ServerSocketconstructor 如果无法监听指定端口,将抛出异常。例如,该端口已被使用。