1

私は今日、大学からこのサンプル コードを受け取りました。大学内では問題なく動作しましたが、自宅のマシンで (Eclipse を使用して) 実行すると、アクセス許可が拒否されます。大学のマシンは Windows (7) で、自宅のコンピューターは Linux (Ubuntu) です。

次のエラーが表示されるのはなぜですか?

I/O 許可のエラーが拒否されました

ポート 338 を使用しています。

コードのコピー:

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

public class Server 
{
    public static void main(String[] args)
    {
        try
        {
            // First create the input from the keyboard
            BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Server Program");

            // Get the port to listen on
            System.out.print("Enter port number to listen on: ");
            String port_string = input.readLine();

            // The port number needs to be an int, so convert the String to an int
            int port = Integer.parseInt(port_string);

            // Create a ServerSocket to listen on this address
            ServerSocket server = new ServerSocket(port);

            // Accept an incoming client connection on the server socket
            Socket sock = server.accept();

            // Create the output stream to the client
            DataOutputStream network = new DataOutputStream(sock.getOutputStream());

            // Send message
            network.writeUTF("Welcome " + sock.getInetAddress().getHostName() + ". We are " + new Date() + "\n");

            // Close sockets.  This will cause the client to exit
            sock.close();
            server.close();
        }
        catch (IOException ioe)
        {
            System.err.println("Error in I/O");
            System.err.println(ioe.getMessage());
            System.exit(-1);
        }
    }
}
4

2 に答える 2

3

1024 未満のポートは、ほとんどの最新の OS (Ubuntu を含む) の特権であり、管理者/ルートとして、または昇格された特権でプログラムを実行する必要があります。

自宅でテストするために、より高いポートを試してみてください。問題ないはずです。

于 2012-10-05T10:16:02.710 に答える
2

あなたのホーム マシンは Ubuntu を実行していると言います。

Ubuntu (およびその他の Unix ライクなオペレーティング システム) では、通常のユーザーはポート 1024 未満のポートをリッスンできません。

ポート番号 >= 1024 で実行してみてください。

于 2012-10-05T10:16:42.007 に答える