我是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)未定义"。感谢。
答案 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 的构造函数如果无法侦听指定的端口,则会引发异常。例如,该端口已被使用。