忍者ブログ
メモ、備忘録、その他雑記を記載します。 ただし、このHPに記載している情報を利用した結果 損失・損害等が発生したとしても筆者は責任を持ちません。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

javaのsocket通信 サーバプログラムのサンプルです。

関連:クライアントプログラムサンプル

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

/**
 * サーバクラス
 *
 * @author
 * @version 1.0
 */
public class Sv {

    static final String strHowTo = "help: java Sv port";

    /**
     * スタートアップ
     */
    public static void main(String[] args) {

        // 引数チェック
        if (args.length != 1) {
            System.err.println( strHowTo );
            return;
        }

        try {
            // サーバソケットの作成
            ServerSocket svsock = new ServerSocket(Integer.parseInt(args[0]));
            svsock.setSoTimeout( 1000 );
            int nCnt = 0;

            // メインルーチン
            Socket sock = null;
            for (;;) {
                // 終了判定
            //    if ( nCnt > 5 ) {
            //        break;
            //    }

                // クライアントからの接続を受け付ける。
                try {
                    sock = svsock.accept();
                }
                catch( SocketTimeoutException e ) {
                    continue;
                }
                nCnt++;

                sock.setTcpNoDelay( true );
                System.out.println("accept");

                // クライアントとの入出力部分はスレッドとして起動する。
                new ThreadCmdRes( sock ).start();
                System.out.println("Waiting for New Connection...");
            }
        }
        catch( SocketException e ) {
            System.err.println("Socket Error!");
            e.printStackTrace();
        }
        catch( IOException e ) {
            System.err.println("IO Error!");
            e.printStackTrace();
        }
        catch (Exception e) {
            System.err.println("Error!");
            e.printStackTrace();
        }
    }
}

/**
 * コマレス処理スレッドクラス
 *
 * @author
 * @version 1.0
 */
class ThreadCmdRes extends Thread {

    private Socket socket = null;

    /**
     * コンストラクタ
     * @param sock クライアントと接続済みのソケットを渡す。
     */
    public ThreadCmdRes(Socket sock) {
        this.socket = sock;
    }

    /**
     * ファイナライザ
     * 念のためソケットの破棄を行っている。
     */
    protected void finalize() {
        try {
            socket.close();
        } catch (Exception e) {}
    }

    public void run() {
        try {
            // 文字列受信処理
            InputStream is = socket.getInputStream();
            BufferedReader bufreader
              = new BufferedReader(
                    new InputStreamReader( is ) );
            System.out.println("入力ストリーム取得");

            // 入力されるまで待つ
            while ( is.available() == 0 ) {
                Thread.sleep( 10 );
                continue;
            }

            String line = null;
            line = bufreader.readLine();
            System.out.println( line );
            System.out.println("文字列受信処理");

            // メッセージ送信
            BufferedWriter bufwriter
              = new BufferedWriter(
                  new OutputStreamWriter( socket.getOutputStream() ) );
            bufwriter.write( "Send sv -> cl" );
            bufwriter.newLine();
            bufwriter.flush();
            System.out.println( "文字列送信処理" );

            // 後処理
            bufreader.close();
            bufwriter.close();
            socket.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

拍手[0回]

PR
javaのsocket通信 クライアントプログラムのサンプルです。

関連:サーバプログラムサンプル

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

/**
 * クライアントクラス
 *
 * @author
 * @version 1.0
 */
public class Cl {

    static final String strHowTo = "help: java Cl host port";

    /**
     * スタートアップ
     */
    public static void main(String[] args) {

        // 引数チェック
        if (args.length != 2) {
            System.err.println( strHowTo );
            return;
        }

        try {
            // ソケットを作成してサーバに接続する。
            Socket socket = null;
            try {
                socket = new Socket(args[0], Integer.parseInt(args[1]));
            } catch (ConnectException e) {
                System.out.println("connectできませんでした");
                return;
            }
            System.out.println("socket生成");
            socket.setTcpNoDelay(true);

            // メッセージ送信
            BufferedWriter bufwriter = new BufferedWriter(
                    new OutputStreamWriter(socket.getOutputStream()));
            bufwriter.write("Send cl -> sv");
            bufwriter.newLine();
            bufwriter.flush();
            System.out.println("文字列送信処理");

            // 文字列受信処理
            InputStream is = socket.getInputStream();
            BufferedReader bufreader
                = new BufferedReader(
                    new InputStreamReader(is));
            System.out.println("入力ストリーム取得");

            // 入力されるまで待つ
            while (is.available() == 0) {
                Thread.sleep(10);
                continue;
            }

            String line = null;
            line = bufreader.readLine();
            System.out.println(line);
            System.out.println("文字列受信処理");

            // 後処理
            bufreader.close();
            bufwriter.close();
            socket.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


拍手[0回]

javaでプロパティファイルを読み込む処理です。
 

import java.util.Properties;
import java.util.Enumeration;
import java.io.*;


public class Main {

 public static void main( String[] strArg ) {

  try {
   Properties prop = new Properties();
   Reader r = new InputStreamReader(Main.class.getResourceAsStream("setting.properties"));
   prop.load( r );

   // キー一覧表示
   Enumeration e = prop.propertyNames();
   while( e.hasMoreElements()) {
    System.out.println( "キー:" + e.nextElement());
   }

   // キーに対応した値表示
   System.out.println( "キー:" + prop.getProperty("123"));
   System.out.println( "キー:" + prop.getProperty("456"));
   System.out.println( "キー:" + prop.getProperty("789"));

  } catch (Exception e) {
   System.out.println("Exception:" + e);
  }
 
  return;
 }

 void Main() {
 }
}

setting.propatiesの内容
123 = 11111
456 = 22222
789 = 33333

 

拍手[0回]

ボタンのアクションリスナー登録方法(2種類)です。

方法1 actionPerformed()関数を追加してそこにイベント処理を記載する方法
class Xxx extends JFrame implements ActionListener {
    private JButton btnTest;

    public Xxx() {
        // ~
        btnTest = new JButton("test");
        btnTest.addActionListener(this);
    }

    public void actionPerformed(ActionEvent event) {
        if (event.getSource() == btnTest) {
            // ボタン押下のイベント処理
        }
    }
}

方法2 アクションリスナー追加時に同時にイベント処理を記載する方法
class Xxx extends JFrame implements ActionListener {
    private JButton btnTest;

    public Xxx() {
        // ~
        btnTest = new JButton("test");
        btnTest.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // ボタン押下のイベント処理
            }
        });
    }
}

拍手[0回]

Threadクラスから継承するスレッドと、Runnableインタフェースを持つスレッドの雛形です。

/**
 * メインクラス
 *
 * @author
 * @version 1.0
 */
public class Main {
    /**
     * アプリケーション起動処理
     *
     * @param args
     *            コマンドライン引数
     * @return なし
     */
    public static void main(String[] args) {
        System.out.println("Hello");

        ThreadClass tcs = new ThreadClass();
        tcs.start();

        ThreadIF tif = new ThreadIF();
        Thread t = new Thread(tif);
        t.start();
    }
}

class ThreadClass extends Thread {
    public void run() {
        String str;

        for (int i = 0; i < 10; i++) {
            try {
                sleep(100);
            } catch (InterruptedException e) {
                System.out.println(e);
            }
            str = String.format("class %04d", i);
            System.out.println(str);
        }
    }
}

class ThreadIF implements Runnable {
    public void run() {
        String str;

        for (int i = 0; i < 10; i++) {
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                System.out.println(e);
            }
            str = String.format("IF    %04d", i);
            System.out.println(str);
        }
    }
}

拍手[0回]

 HOME | 1  2  3 
Admin / Write
カレンダー
05 2025/06 07
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
フリーエリア
最新コメント
最新トラックバック
プロフィール
HN:
Ace
性別:
非公開
バーコード
ブログ内検索
P R
忍者アナライズ
忍者ブログ [PR]