Subscribe to RSS Feed ログイン

オーガニック・ウェルス

Wednesday
2018年2月21日

JavaでSocket通信・同時接続のやりかた

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class socket_test{

	public static void main(String[] args) {
		ServerSocket serverSocket = null;
		try {
			serverSocket = new ServerSocket(2000, 10);
			while(true) {

				Socket socket = null;
				try {
					socket = serverSocket.accept();
				} catch (IOException e) {
					e.printStackTrace();
					break;
				}
				Thread trd = new TestThread(socket);
				trd.start();
			}
		} catch(IOException e1) {
			e1.printStackTrace();
		}
	}
}
class TestThread extends Thread {
	private Socket socket;
	public TestThread(Socket socket) {
		this.socket = socket;
	}
	public void run() {
		OutputStream ops = null;
		InputStream ips = null;

		try {
			ops = socket.getOutputStream();
			ips = socket.getInputStream();
			byte[] read_buff = new byte[1000];
			int receive_byte = ips.read(read_buff);
			if(receive_byte >= 0) {
				String msg = new String(read_buff, 0, receive_byte);
				msg = "OK => " + msg;
				ops.write(msg.getBytes());
				System.out.println(msg);
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				ops.close();
				ips.close();
				socket.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

方法は特に難しくなく、ひとつのServerSocketに対して複数のSocketを作れるようにすること。そしてServerSocketの第二引数は同時接続数の様です。

簡単サンプルを作ろうと思ったのですが結構長くなってしまいました。作成したプログラムはTelnetで確認できます。

コメント(0)続きを読む

メイリオKEフォントを試してみる

以下のサイトより

メイリオフォントよりメイリオKEフォント 「MeiryoKeGothic」 – Net Life

メイリオKEフォントの場合
なぜ41%の数字かというと、カロリー総額のうち油脂類が供給量では大部分を占めているのに自給率では3%にしか成りません。でも生産額ベースでは殆ど割合には含まれません。つまり油脂類は購入しているヒトは少ないがカロリーが高いため数値への影響が大きく自給率を見た目上引き下げているのです。

メイリオの場合
なぜ41%の数字かというと、カロリー総額のうち油脂類が供給量では大部分を占めているのに自給率では3%にしか成りません。でも生産額ベースでは殆ど割合には含まれません。つまり油脂類は購入しているヒトは少ないがカロリーが高いため数値への影響が大きく自給率を見た目上引き下げているのです。

MS Pゴシックの場合
なぜ41%の数字かというと、カロリー総額のうち油脂類が供給量では大部分を占めているのに自給率では3%にしか成りません。でも生産額ベースでは殆ど割合には含まれません。つまり油脂類は購入しているヒトは少ないがカロリーが高いため数値への影響が大きく自給率を見た目上引き下げているのです。

確かに文字幅が調整されていてMS Pゴシックと混同しても大丈夫そうですね。



コメント(0)続きを読む

MySQLをAccessで使った時の文字化け解消方法

[修正]2011/8/31 MySQL5.5で設定値が変更になったようです。

my.iniの設定
[client]
default-character-set=utf8
[mysqld_safe]
skip-character-set-client-handshake
[mysqld]
default-character-set = utf8 ←5.1以下なら
character-set-server=utf8 ←5.5から

skip-character-set-client-handshake
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
[mysql]
no-auto-rehash
default-character-set=utf8

データベース作成時
CREATE DATABASE new_db_name DEFAULT CHARACTER SET utf8;

ODBC側の設定

Character Set:sjis

コメント(0)続きを読む

WebGL学習用自分リンク

http://d.hatena.ne.jp/nakamura001/

http://webos-goodies.jp/archives/getting_started_with_webgl.html

コメント(0)続きを読む

Javascriptで物理演算の練習

ボールが自由落下するサンプルを作ってみました。 描画Canvasタグを使用しているので対応していないブラウザでは動きません。

第2段はこちら

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />

<title>物理演算</title>
<script>
<!--
var objects = Array();

function CircleObject() {
	this.x = 5;
	this.y = 5;
	this.div_x = 0;
	this.div_y = 0;
}

var timerId;
window.onload = function myload() {
	timerId = setInterval('timeout()', 30);
}
function timeout() {
	var canvas = document.getElementById('canvas_1');
	if ( ! canvas || ! canvas.getContext ) { return false; }

	var ctx = canvas.getContext('2d');
	ctx.beginPath();
	ctx.clearRect(0, 0, 500, 500);
	for(i = 0;i < objects.length;i++) {
		objects[i].x += objects[i].div_x;
		objects[i].y += objects[i].div_y;
		if(objects[i].y >= 495) {
			objects[i].y = 496;
			objects[i].div_y = Math.floor(- (objects[i].div_y / 2));
		} else {
			objects[i].div_y += 0.98;
		}
		ctx.beginPath();
		ctx.arc(parseInt(objects[i].x), parseInt(objects[i].y), 5, 0, Math.PI*2, false);
		ctx.fill();
	}
}
function addObj() {
	var idx = objects.length;
	objects[idx] = new CircleObject();
	objects[idx].x = 5 + Math.floor( Math.random() * 495 );
}
function clearObj() {
	objects = Array();
}
-->
</script>
<style>

<!--

-->

</style>

</head>

<body>
<div style="border:1px solid #666;width:500px;height:500px;">
<canvas id="canvas_1" width="500" height="500"></canvas>
</div>
<input type="button" onclick="addObj();" value="追加" />
<input type="button" onclick="clearObj();" value="クリア" />
<div id="debug"></div>
</body>

</html>

コメント(1)続きを読む