2015-09-26 138 views
0

我是JAVA新手,基本上我使用C++編寫代碼。最近我需要在JAVA套接字編程中做一些事情。但是我在ServerSocket(..)中遇到了一個奇怪的錯誤。我正試圖在特定的端口中創建一個服務器套接字。爲此,我的代碼如下所示。構造函數ServerSocket(int)未定義

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)是未定義的」。謝謝。

+2

1)該代碼不會編譯,因爲它缺少很多,並沒有真正意義。2)你的類聲明在哪裏? 3)當詢問編譯器錯誤消息時,你總是希望發佈完整的錯誤消息和你的問題。 –

+0

另外,你有你自己的類名爲'ServerSocket'?錯誤信息再次告訴我們很多,因爲它會給我們錯誤類的完整名稱。 –

+0

@Hovercraf,我沒有在這裏發佈我的整個代碼。我只是用ServerSocket類粘貼了相關的代碼。 –

回答

1

請看看我的第二個意見,以你原來的問題:

而且,你有你自己的類命名的ServerSocket?

您已經命名了ServerSocket類,因此Java編譯器在這個類,一個接受一個int尋找構造。重命名該類,以避免名稱衝突,現在可以使用Java核心ServerSocket類。

+0

謝謝你。這是問題。 –

1

我首先提出一個java教程。只是要了解基本的差異。

簡而言之:

在Java中一切都必須在一個類中。你定義一個名爲'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 Socket技術教程。

問候!

-2

服務器程序創建的ServerSocket對象在try-與資源聲明:的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(); 
    } 
    } 
} 

構造拋出一個異常,如果它不能在指定的端口上偵聽。例如,該端口已被使用。

+0

以上回答覆制時未包含以下內容:https://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html –