/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package open.dolphin.utilities.common; import java.io.*; import java.net.*; /** * SOCKETクラス * @author Life Sciences Computing Corporation. */ public class SOCKET extends AbstractCommonFunc { protected Socket clientSocket; protected OutputStreamWriter clientOsw; protected BufferedWriter clientBw; protected InputStream clientIs; protected InputStreamReader clientIsr; protected BufferedReader clientBr; protected DataOutputStream clientDos; /** * コンストラクタ */ protected SOCKET() { super(); Init(); } /** * 初期化 */ @Override void Init() { } /** * ソケット接続 * @param host ホスト名 or IPアドレス * @param port ポート番号 * @return * @throws UnknownHostException * @throws IOException */ protected Socket createClientSocket(String host, int port) throws UnknownHostException, IOException { // ソケットの生成 clientSocket = new Socket(host, port); return clientSocket; } /** * 送信 * @param data 送信するデータ * @throws IOException */ protected void sendClientData(String data) throws IOException { if(clientSocket == null || data == null) return; // 送信する //clientOsw = new OutputStreamWriter(clientSocket.getOutputStream()); //clientBw = new BufferedWriter(clientOsw); //clientBw.write(data); //clientBw.flush(); clientDos = new DataOutputStream(clientSocket.getOutputStream()); clientBr = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); clientDos.writeBytes(data); } /** * 受信 * @param encode エンコード * @return 受信したデータ * @throws IOException */ protected String recvClientData(String encode) throws IOException { // 受信する //clientIs = clientSocket.getInputStream(); //clientIsr = new InputStreamReader(clientIs, encode); //clientBr = new BufferedReader(clientIsr); //// 受信できるまで待機 //while(clientIs.available() == 0); //// 受信した内容を出力 //char[] ret = new char[clientIs.available()]; //clientBr.read(ret); if(clientBr == null) return null; StringBuilder ret = new StringBuilder(); String tmp; while((tmp = clientBr.readLine()) != null) { ret.append(tmp); } return ret.toString(); } protected String recv() throws IOException { StringBuilder ret = new StringBuilder(); String tmp; while((tmp = clientBr.readLine()) != null) { ret.append(tmp); } clientDos.close(); clientBr.close(); clientSocket.close(); return ret.toString(); } /** * 終了 * @throws IOException */ protected void closeClientSocket() throws IOException { //clientBw.close(); //clientOsw.close(); //clientBr.close(); //clientIsr.close(); //clientSocket.close(); clientDos.close(); clientBr.close(); clientSocket.close(); } protected void createServerSocket(int port) throws IOException { // ソケットの生成 ServerSocket serverSocket = new ServerSocket(port); boolean endFlag = false; Socket socket = null; while(!endFlag) { // クライアントからの接続を待機(接続時に新たなSocketを返す) // 接続があるまで処理はブロックされるため、複数のクライアントからの接続を受付する // ためにはスレッドを使用する。 socket = serverSocket.accept(); // データの受信 InputStreamReader isr = new InputStreamReader(socket.getInputStream()); BufferedReader br = new BufferedReader(isr); String ret = br.readLine(); br.close(); socket.close(); if(ret.startsWith("[end]")) { // データの返信 //OutputStream os = socket.getOutputStream(); //PrintStream ps = new PrintStream(os); //ps.println("END"); serverSocket.close(); endFlag = true; } } } }