fc2ブログ
01.17
Tue
こないだのΠを求めるJavaのやつを何となくjar形式にしときます。

多分これで一般的な環境で実行できるはずですね。

■jarを作る方法

jar cvfm (適当な名前.jar) (マニフェストファイル) (追加するclassファイル1) (追加するファイル名2) ...

今回以下のjarファイルを作るのに入力したやつ

jar cvfm pi.jar MANIFEST.MF getpi.class timer.class


■jarの実行方法

java -jar (ファイル名)

とか。

GUIなコードだったら、クリックするだけでいいのかも。

では適当にテストということでおいときます。

拡張子はjarに変えて下さい。

ここです




スポンサーサイト



comment 2 trackback 0
12.25
Sun
クライアントがわのアプリケーションを作ろうと思うので、awtをいじってます。

そのテストです。

続き↓
続きを読む
comment 0 trackback 0
12.17
Sat
こんばんは~

/*

冬も深まる今日この頃、みなさま如何お過ごしでしょうか。

私moratoriはセンター試験に向けて、毎日猛烈に勉強しているわけではなく

こうしてブログを更新しているわけですが、

どうしようマジで!!!!!!もう一ヶ月もねぇーじゃん!!!!

あーだれか、特に理系科目の成績が今からでもグングン伸びる方法教えてくれないかなぁ。。。。

いちおう、理系クラスにはいるはずなのになぁおかしいなぁ・・・

ということでそんな底辺moratoriのセンター一ヶ月前の現状でした

*/

さて本題のJavaのSocketでファイルを送ってみるテストです。

特に特筆すべき点はないのですが、強いて言うなら

ファイルをバイナリで読みたいので、FileInputStreamというクラスを使っているのと、

そこで読んだデータをそのままソケットに流したいのでOutputStreamを使っている事ですかね。

(BufferedWriterとかでラップしていいのかな?)

では

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

class SendFileTest {


	public static void main(String[] argv) {

		String host = "localhost";
		String filename;
		int port = 80;
		
		try {
			
			BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
			System.out.println(host + "に送信したいファイル名を入力下さいな");
			filename = in.readLine();
			
			Socket sock = new Socket(host , port);
			System.out.println("戻り値: " + String.valueOf(SendBinFile(sock , filename , 65536)));
			sock.close();
			in.close();

		} catch(IOException e) {
			
			System.out.println(e);

		}
		
	}
	
	
	static int SendBinFile(Socket sock , String filename , int eachmax)throws IOException {
		File target = new File(filename);
		if ((target.exists() == false)||(target.canRead() == false)||(target.isFile() == false)) {
			return -1;
		}
		FileInputStream handle = new FileInputStream(target);
		OutputStream W_SocketByte = sock.getOutputStream();
		long filesize = target.length();
		long looptimer = filesize / eachmax;
		int tipsize = (int)(filesize - (looptimer * eachmax));
		byte[] maindata = new byte[eachmax];
		for (int index = 0 ; index != looptimer ; index++) {
			if (handle.read(maindata) != eachmax) {
				return -2;
			}
			W_SocketByte.write(maindata);
		}
		byte[] tipdata = new byte[tipsize];
		if (handle.read(tipdata) != tipsize) {
			return -2;
		}
		W_SocketByte.write(tipdata);
		handle.close();
		W_SocketByte.close();
		return 0;
		}
}


いつも通り、実行は自己責任でお願いします。

図々しい様ですが、もしおかしな所がございましたらコメントいただけると嬉しいです。
(バグ報告以外のコメの方が嬉しいんだからね!!)

しかしこの状態だとめちゃくちゃに効率悪いです。

特に毎回Socketクラスを渡してそこからストリームを作るところなんか。。。

まぁちゃんとクラスに組み込んでやればいいんですがね。


余談ですが、上の様なソースコードを張り付けるときに

他のウェブサイトなんかだとすごい整形されてて綺麗な感じなんですが、どうやってるんだろ。

htmlとかjavascriptとかcss?には疎いのでよく分からないなぁ。今度探してみよう。
comment 0 trackback 0
10.18
Tue
こんばんはです。

最近漸く受験生としての焦燥感というか、

自覚というか、そんなものが芽生えてきました。

心境の変化としては、やはり環境的要因が大きいですね。

まぁ学校に行って、クラスを見渡してもろくに勉強してないのは

私くらいなものでして....

さすがにやろうと思ったわけです。

しかしセンターまであと少し(80日くらいですかね?ww)しかないのに、

今更になってとか、私の未来は暗澹冥濛としているわけで。。。

落ちたら落ちたで自業自得ですよね。ぐうの音もでませんよ。


まぁさて、そんなこと言っといて練習中javaのコードを貼り付けるんですが(苦笑

ソケット作って、httpリクエストして、受信せずに終了するというなんとも迷惑なものですが・・・w

接続先は自分の80番ポートです。

import java.net.*;
//ソケットを作ったりするためにimportします

import java.io.*;
//BufferedReaderとかそのへんのio機能を使う為にimportします

class mysocket{
	
	public static void main(String argv[])throws IOException{
	//実行された時に行う処理の内容をこのmainメソッド以下に書いていきます
	//mainは勝手に呼ばれます
		
		String host = "127.0.0.1";
		//接続先のIP(自分)です
		
		int port = 80;
		//接続先のポートです
		
		Socket sock = new Socket();
		//ソケットを作ります
		
		sock.connect(new InetSocketAddress(host , port));
		//ソケットを接続させます。
		//InetSocketAddressで、hostとportをconnectの引数に使える様に変えてるんだと思います
		
		BufferedReader in  = new BufferedReader(new InputStreamReader(sock.getInputStream()));
		//このinから受信できるようになります多分。
		//ここでは使ってませんwwww
		
		BufferedWriter out = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));
		//このoutから送信できるようになります。こういうのってファイルオブジェクトっていうのかな。
		
		out.write("GET / HTTP/1.0\r\n\r\n");
		//httpリクエストを送る
		
		out.flush();
		//確実に書き込む(httpリクエストを送る)
		
		out.close();
		in.close();
		sock.close();
		//イロイロ閉じる。
	
	}
	
	
}


ではノシ



↓決意表明続きを読む
comment 0 trackback 0
10.16
Sun
お久しぶりです

イロイロありましてちょっと更新さぼってしまいました~

余談ですがデニスリッチー亡くなられましたね

ジョブズといい、なんでこう立て続けに偉大な方々が・・・・

デニスリッチーを知らない方は是非ここを

ちなみにプログラム弄る人なら必ず知ってる、hello, worldは

氏の書いたCの参考書、

「プログラミング言語C」の例文中に出てくるものなんだそうです。


悲しい事です・・・

さてjavaで、指定したディレクトリのファイルリストを返すものを置いときます。

ファイルのリストなのでディレクトリ名は含みません。

たぶんディレクトリの数だけnullが入ってしまうとおもいますが仕様ですw許して下さい。ww

forでループしてnullが来たらbreakする的な感じで・・・

ではでは

	static String join(String dirname , String filename){
		File target = new File(dirname , filename);
		return target.getPath();
	}

	static String[] listfile(String dirname){
		String alllist[] = new File(dirname).list();
		int counter = 0;
		String filelist[] = new String[alllist.length];
		
		for(int i = 0;i<alllist.length;i++){
			File tmp = new File(dirname , alllist[i]);
			if (tmp.isFile()){
				filelist[counter] = join(dirname , alllist[i]);
				counter++;
			}
		}
		
		return filelist;
	}


使い方は、

String lis[] = listfile(path);

的な感じでおkだと思います

見苦しいソースコードを申し訳ございませんでした!

では!
comment 0 trackback 0
back-to-top