Java:リモート接続ごしでファイルを読み書き

文:Jeff Hanson(TechRepublic)  翻訳校正:原井彰弘
2007-12-19 14:20:01
  • このエントリーをはてなブックマークに追加

一方、クライアント(リストBを参照)はポート7776でソケットを作成し、サーバとの接続を試みる。接続が成功すると、クライアントはユーザが入力したデータを読み取り、ソケットの出力ストリームを用いてサーバにデータを書き込む。その後、サーバからデータが返されると、クライアントはそのデータを読み取り、System.outに出力を行う。

リストB

public class TCPClient
{
    public static void main(String[] args)
    {
        try
            {
                TCPClient app = new TCPClient();
            }
        catch(java.io.IOException e)
            {
                System.out.println(e.toString());
            }
    }

    public TCPClient()
        throws java.io.IOException
    {
        java.net.Socket socket = null;
        java.io.PrintWriter os = null;
        java.io.BufferedReader is = null;

        try {
            socket = new java.net.Socket("localhost", 7776);
            os = new java.io.PrintWriter(socket.getOutputStream(), true);
            is = new java.io.BufferedReader(new
                                            java.io.InputStreamReader(socket.getInputStream()));
        } catch (java.net.UnknownHostException e) {
            System.err.println("Cannot open localhost");
            System.exit(1);
        } catch (java.io.IOException e) {
            System.err.println("IOException: " + e.toString());
            System.exit(1);
        }

        java.io.BufferedReader input =
            new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
        String userInput;

        System.out.println("Enter text to send: ");
        if ((userInput = input.readLine()) != null)
            {
                if (userInput.length() > 0)
                    {
                        System.out.println("Sending " + userInput + " to server");
                        os.println(userInput);
                        System.out.println("Server response: " + is.readLine());
                    }
            }

        os.close();
        is.close();
        input.close();
        socket.close();
    }
}

まとめ

Javaプラットフォームが提供しているネットワーク関連のクラスを用いると、ネットワークやリモート通信を利用したアプリケーションを実装することが可能になる。ソケットのクラスを利用することによって、多くのクライアントやサーバとの通信ができるようになるのである。

この記事は海外CNET Networks発のニュースをシーネットネットワークスジャパン編集部が日本向けに編集したものです。海外CNET Networksの記事へ

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]