0

ServerSocketを作成し、を呼び出してソケットアドレスを監視するときはいつでも、次のようgetLocalSocketAddress()に表示されます。

0.0.0.0/0.0.0.0:xxxxx(xxxxはランダムポート番号)

サーバーの私のコードは次のとおりです。

try{
    Boolean end = false;
    ServerSocket ss = new ServerSocket(0);
    System.out.println("Program running, Server address:" + ss.getLocalSocketAddress().toString());
    while(!end){
        //Server is waiting for client here, if needed

        Socket s = ss.accept();
        System.out.println("Socket Connected !");  
        BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()));
        PrintWriter output = new PrintWriter(s.getOutputStream(),true); //Autoflush
        String st = input.readLine();
        System.out.println("Tcp Example From client: "+st);
        output.println("Good bye and thanks for all the fish :)");
        s.close();

    }
    ss.close();  
 } catch (Exception ex) {
     ex.printStackTrace();
 }
4

1 に答える 1

0

ServerSocketに「0」を割り当てないでください

ポートは 0 ~ 65535 ですが、使用されるのは 1 ~ 65534 です。さらに、Telnet、FTP、HTTP などの他のよく知られているサービスで使用される 1024 を超えるポートを使用してみてください。

私のコードを見てください...あなたのコードを実行するのに役立つかもしれません.....

サーバー側のコード例:

    public class ServerTest {

        ServerSocket s;

        public void go() {

            try {
                s = new ServerSocket(4445);

                while (true) {

                    Socket incoming = s.accept();
                    Thread t = new Thread(new MyCon(incoming));
                    t.start();
                }
            } catch (IOException e) {

                e.printStackTrace();
            }

        }

        class MyCon implements Runnable {

            Socket incoming;

            public MyCon(Socket incoming) {

                this.incoming = incoming;
            }

            @Override
            public void run() {

                try {
                    PrintWriter pw = new PrintWriter(incoming.getOutputStream(),
                            true);
                    InputStreamReader isr = new InputStreamReader(
                            incoming.getInputStream());
                    BufferedReader br = new BufferedReader(isr);
                    String inp = null;

                    boolean isDone = true;

                    System.out.println("TYPE : BYE");
                    System.out.println();
                    while (isDone && ((inp = br.readLine()) != null)) {

                        System.out.println(inp);
                        if (inp.trim().equals("BYE")) {
                            System.out
                                    .println("THANKS FOR CONNECTING...Bye for now");
                            isDone = false;
                            s.close();
                        }

                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    try {
                        s.close();
                    } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                    e.printStackTrace();
                }

            }

        }

        public static void main(String[] args) {

            new ServerTest().go();

        }

}
于 2012-07-02T12:20:38.967 に答える