构造函数ServerSocket(int)未定义

时间:2015-09-26 21:15:48

标签: java sockets serversocket

我是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) {}

    }

}

但是我收到了编译错误"构造函数ServerSocket(int)未定义"。感谢。

3 个答案:

答案 0 :(得分:1)

我先建议一个java教程。只是为了了解基本的差异。

简而言之:

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

这是你的例子(Filename: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 Socket教程。

问候!

答案 1 :(得分:1)

请查看我对原始问题的第二条评论:

  

另外,你有自己的名为ServerSocket的类吗?

您已经将您的类命名为ServerSocket,因此Java编译器正在寻找此类中的构造函数,一个采用int的构造函数。重命名该类,以便您不会发生名称冲突,现在可以使用Java核心ServerSocket类。

答案 2 :(得分:-2)

服务器程序在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();
     }
   }
 }

ServerSocket 构造函数如果无法侦听指定的端口,则会引发异常。例如,该端口已被使用。