iLEDについて

Javaサンプル

Netbeans

Libre Office Basicマクロ

その他


Author of This Site:
M. Kom. (kom9kmail@gmail.com)
Spam対策のため@マークは全角になっていますから、メール送信時には半角にしてください。

Java チャットサーバーとチャットクライアントサンプルソース

ネットワーク上でChatClientからChatServerに文字列を送信するプログラム。
実行時には、まずChatServerを起動させておき、その後ChatClientを起動して接続する。
同一のPCでも実験はできる。
コマンドプロンプトで、
java ChatServer 16000
次に、
java ChatClient 127.0.0.1 16000
のように入力する。127.0.0.1は自分自身のアドレスをあらわす。
これにより、1台のPC上でサーバーソフトとクライアントソフトが動く。

TCP/IPソケットプログラミング Java編
↑この本はJavaの通信プログラムの基本理解に手頃です。あまり厚くないのでとっつきやすい。
//ChatServer.java
//チャットサーバープログラム
//チャットクライアントプログラムからの接続を待つ。
//接続後は1行の文字列読み取りを行い、接続終了する。

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

class ChatServer 
{
  public static void main(String[] args)
  {
    try {
      // サーバーソケット作成
      //起動時パラメータからポートを読み取り、
      //そのポートで接続要求を待つ
      //ServerSocketクラスはクライアントからの接続を待ち、
      //srvSock.accept();によって接続したSocketオブジェクト
      //を返す。
      //その後の通信には、このSocketオブジェクトを使用する。
      int port = Integer.parseInt(args[0]);
      ServerSocket srvSock = new ServerSocket(port);
  
      // 接続待機。接続完了後、次行命令に移る。
      Socket socket = srvSock.accept();
      //接続先アドレスを表示
      System.out.println("接続先: " + socket.getInetAddress());

      //通信処理 
      //ソケットの入力ストリームから文字列を1行読み取る。
      BufferedReader reader = new BufferedReader
        (new InputStreamReader(socket.getInputStream()));
      String line = reader.readLine();
      //読み取った文字列を表示
      System.out.println("受信メッセージ:" + line);

      //終了処理 このプログラムは1行読み取ったら終了する。
      //通信を続けるのであれば、reader.readLine();を
      //ループするが、終了コマンドをチェックする等の処理を
      //記述する。
      reader.close();
      socket.close();
      srvSock.close();
    }
    catch (IOException e) {
      e.printStackTrace();
    }
  } 
}


//ChatClient.java
//チャットクライアントサンプルプログラム
//チャットサーバーが動いているコンピュータに対して
//接続を行う。
//コマンドラインパラメータとして接続先アドレスとポート番号を
//指定する。
import java.net.*;
import java.io.*;

class ChatClient 
{
  public static void main(String[] args)
  {
    try {
      InetSocketAddress socketAddress = 
      new InetSocketAddress(args[0], Integer.parseInt(args[1]));
      Socket socket = new Socket();
      socket.connect(socketAddress, 10000);

      InetAddress inetadrs;
      if ((inetadrs = socket.getInetAddress()) != null) {
        System.out.println("接続先: " + inetadrs);
      }
      else {
        System.out.println("接続失敗");
        return;
        }

      //送信するメッセージは以下の行に記述されているもの。
      String message = "チャット接続送信テスト。";
      PrintWriter writer = new PrintWriter(socket.getOutputStream());
      System.out.println("送信メッセージ: " + message);
      writer.println(message);

      writer.close();
      socket.close();
    }
    catch (IOException e) {
      e.printStackTrace();
    }
  } 
}