1 名前:じぇいそん [04/06/03 14:00] ネットワークプログラミング相談室ではいろいろな言語の質問が混ざっているようなの で、 Java 用にスレを立ててみることにしました。 Java によるTCP/IPソケットプログラミング、 ネットワークサーバーの構築、RMI 、JINI 、 分散コンピューティングなどについての技や プログラミングついてみんなで話し合いましょう!! 関連スレ: ネットワークプログラミング相談室 Port9 pc5.2ch.net/test/read.cgi/tech/1080658835/
331 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 18:28:47 ] >>329 >「1000*1000バイトか、ストリームの終わりまで読みこむ」という意味の命令ではないこと。 クライアント側に失敗となる節が無いのに、 結果が途中で尻切れになる原因が問題なのです。 「クライアント側が、どうやって何バイト読み込むかや終わりまで読み込むか」などの 解決策を問題にしているわけではありません。 結果が途中で尻切れになる原因が問題なのですが 勝手に読み替えてませんか?
332 名前:デフォルトの名無しさん [2006/09/07(木) 19:25:52 ] いつまでも的確なレスが無くて、調べてみたんですけど、 これってまだ直ってないバグなんじゃないですか? bugs.sun.com/bugdatabase/view_bug.do?bug_id=4188105 bugs.sun.com/bugdatabase/view_bug.do?bug_id=4125538
333 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 19:48:05 ] じゃ、仕事も終わりだし、今日は風俗に行かないでこのスレ眺めてようや!
334 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 19:58:25 ] >>332 それ、既に closed fixed だし、 読み込みが途中から始まるってバグだから見当違いだと思うぞ。 尻切れになるのは低レベルAPI からの出力を極力そのまま返すという意味で 便利ではないかもしれないが、正しい実装であるとはいえる。 低レベルAPI が何故尻切れになるかは >>312 が既に予想してるとおり。 もう一つ言うと、InputStream は尻切れになってはいけないとは、 どこにも規定されていないので、 その意味でも URLConnection#getInputStream() が返す InputStream の実装は正しく、バグではない。
335 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 20:06:58 ] 正しい実装とか規定とかぬかしているけど、実際に確かめから発言してるのかな・・・
336 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 20:18:22 ] >>335 確かめる必要なんかないよ。それとも >>311 は嘘ついてるのか? java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/io/InputStream.html#read (byte[]) > b が null の場合は、NullPointerException がスローされます。 > b の長さが 0 の場合、バイトは読み込まれず、0 が返されます。 > そうでない場合は、1 バイト以上読み込み処理を行います。 > ストリームがファイルの終わりに達しているために読み込むバイトがない場合は、値 -1 が返されます。 > そうでない場合は、1 バイト以上読み込まれ、b に格納されます。 InputStream が規定してるのは「1バイト以上読み込む」であって EOF か b が満杯になるまで読み込む、とはどこにも書いてない。
337 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 20:27:17 ] available()があるってことが全てなのさ。
338 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 22:44:37 ] >確かめる必要なんかないよ。それとも >>311 は嘘ついてるのか? ほら、だから憶測で話してもね・・ さっきは、思い込みとかだったし。 >、とはどこにも書いてない。 何度もわざわざAPIを引用するのは構わないけど、 そのAPIから読み取って、原因は何かを>>311 は 指摘してほしいんじゃないか? >InputStream が規定してるのは「1バイト以上読み込む」であって EOF か b が満杯になるまで読み込む、とはどこにも書いてない。 「EOF か b が満杯になるまで読み込む」ことを話しているのではなくて、 read(byte[])ではなぜ尻切れなのかなんだけど? read(byte[])ではなぜ全部読み込めないのかじゃないよ。 ずいぶんと自尊心が強い人なんだね。 同じ事を繰り返していて、そろそろ醜いんだけどもう止めてくれる? byte[]とchar[]がどうとか言ってたけど、結局なにか関係あるのか?
339 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 23:25:35 ] べつにさ、煽られようが何だろうがべつにこっちは困らないんだよね。 レポートの締め切りに間に合わないのはあんたなんだし。
340 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 23:26:22 ] ↓ここで"勝利宣言"
341 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 00:01:53 ] はい、readのスニペット。 int cnt = 0; while(cnt >= READBYTES){ int tmpcnt = read(READBYTES); if(tmpcnt <= 0){ throw nullpo; } cnt += tmpcnt; }
342 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 00:39:03 ] 誰か一人だけが悔しいみたい プププ 今日は風俗行かなくても楽しめたな プププ
343 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 00:49:19 ] >>338 > read(byte[])ではなぜ尻切れなのかなんだけど? > read(byte[])ではなぜ全部読み込めないのかじゃないよ。 ……。何が違うのかを説明してくれ。
344 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 01:22:08 ] >>338 例えば、 上は、初めから読み込もうが途中から読み込もうが、 尻切れ(終わりが途中で切れる)に関係していない。 下は、必ず初めから読み込まれている必要があって、かつ、 予定していたところ(長さ)まで読み込んで全部読み込んだといえるが、 この全部(初めから終わりまで)読み込むかどうかは尻切れと関係ない。 たしか、途中で尻切れになる原因だったよね。 日本語の解釈の差だと思うけど・・ 今ちょっと忙しいからこれぐらい。 available()たしかに・・ フーゾク、俺も連れてってくれ・・
345 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 01:55:46 ] >>343 字数が違うんじゃね?
346 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 02:08:05 ] >>338 > read(byte[])ではなぜ尻切れなのかなんだけど? そーゆー仕様だから。以上。 で良いんじゃないかと思ってみたりする。
347 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 06:42:42 ] 風俗もいいが、エイズで身体が腐っちゃうのは勘弁だな。
348 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 07:38:38 ] ストリームのバイナリー転送で 途中で切れて終わったり 完了しなかったりしてるけど int in.read() で1バイトずつちまちまやらないと ダメなんじゃないのか?
349 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 09:28:26 ] InputStream in=con.getInputStream (); byte[] buf=new byte[1000*1000]; int size=0; for (int k=0; size<buf.length && (k=in.read())!=-1;) { buf[size++]=(byte)k; } これはチマチマですが、尻切れぜずにストリーム終わりまで読み込めます。解決策。 >>341 for (;;) { int sz=in.read(buf, size, buf.length); if (size>=buf.length || sz==0 || sz==-1) break; size+=sz; } でも、urlが "www.yahoo.co.jp/" などは例外が出ます。 Exception in thread "main" java.lang.IndexOutOfBoundsException at sun.net.www.http.ChunkedInputStream.read(Unknown Source) at java.io.FilterInputStream.read(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unkn own Source) at Test.main(Test.java:37) とすると、InputStreamは、int read()ですむのですが、 int read(byte[]), int read(byte[],int,int)は、(どうやって使うかと言うよりも)自分で使うときはどこが使いどころなんでしょうか?
350 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 09:52:26 ] >>329 はやさしいなあ
351 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 10:15:56 ] >>349 > for (int k=0; size<buf.length && (k=in.read())!=-1;) > buf[size++]=(byte)k; これ、尻切れにはならんかもしれんが、最初に 0が入らんか? > int sz=in.read(buf, size, buf.length); InputStream の仕様では、size が 0以外の条件で この行を実行する場合 IndexOutOfBoundsException投げないといけない事になってる。 in.read(buf, size, buf.length - size) とかしないと。 あと、size>=buf.length の条件でループ抜けるなら size += sz やった後の方が良いぞ。 ついでに言うと、sz == 0 も特に要らない。
352 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 10:18:48 ] > これ、尻切れにはならんかもしれんが、最初に 0が入らんか? あ、入らないね。失敬失敬。
353 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 10:45:51 ] >>350 確かにやさしいです。読み違えなかったらですけど・・ InputStream in=con.getInputStream (); byte[] buf=new byte[1000*1000]; int size=0; for (int k; size<buf.length; ++size) { k=in.read(); if (k!=-1) break; buf[size]=(byte)k; } >>341 がいいたいのはこれでしょ? for (int sz; size<buf.length; size+=sz;) { sz=in.read(buf, size, buf.length); if (sz==-1) break; } int InputStream.read(byte[],int,int)は結局どのあたりで使うのだろう・・
354 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 11:01:35 ] こっちね。 for (int sz; size<buf.length; size+=sz;) { sz=in.read(buf, size, buf.length - size); if (sz==-1) break; }
355 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 13:47:45 ] >>311 >java.net.URLConnection con=url.openConnection(); >InputStream input=con.getInputStream(); >byte[] buffer=new byte[1000*1000]; >int size=input.read(buffer); >String data=new String(buffer, 0, size); このコードが、「(1000*1000バイトから溢れない範囲で、)ストリームの終わりまで読め」 っていう意味では無いことは理解してる? まぁ、理解してないから、 >>331 >クライアント側に失敗となる節が無いのに、 >結果が途中で尻切れになる原因が問題なのです。 なんて、頓珍漢なこと言ってるんだろうけど。 クライアント側で、「尻切れでいいよ」っていう意味のプログラム(>>311 )書いてるのに、 尻切れにならない理由がない。もちろん、常に尻切れになるって意味ではない。 > int InputStream.read(byte[],int,int)は結局どのあたりで使うのだろう・・ そりゃ、>>353 の前半よりも、>>354 の方が効率が良いからだろ。 動作速度無視、動けば良い、というのだったら、int InputStream#read()だけで足りる。 byte[]、char[]云々は、 >>316 の > Reader input=new InputStreamReader(con.getInputStream()); > とやると、全部読み込めるようなので、 を受けて。それで仮に読みこめたとしても、元のコードで読みたかったものとは違うものになる、って意味。 ああ、でも最終的に >String data=new String(buffer, 0, size); とStringにしたいのか。なら、問題無い。
356 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 15:41:18 ] Runtime.exec() で起動した Process のプロセスIDはどうすればわかりますか?
357 名前:デフォルトの名無しさん [2006/09/08(金) 17:10:29 ] >>355 お前はもうしゃしゃり出てこないくていい。 お前は最後まで気がついてないだろうけど、もう解決してるんだよ。 素直に「私だけわからないので、教えてください」と書けこの阿呆が! >このコードが、「(1000*1000バイトから溢れない範囲で、)ストリームの終わりまで読め」 って勝手に解釈している、あなたが原因です。そんな事はどこから読み取れるのでしょうか? お前はいつまでも図々しくて頭悪いの分かったから、このスレの初めに戻ってもっと熟読してこい。 ところで、何度も同じことしか書いてないけど、お前は実際に試してないで、勝手なこと言ってるんじゃないのか? どうも懲りてないようだから、今後はおまえの事を監視して付け狙うしかなさそうだな。 何か起こる前に、せいぜい身近なことに気を配ってた方がいいだろう。
358 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 17:12:45 ] またまたワロタ
359 名前:デフォルトの名無しさん [2006/09/08(金) 17:23:26 ] >355 知ってると思うけど、 int InputStream#read(byte[],int,int) は int InputStream#read()を内部で回している使っているだけだぞ。 サブクラスで実装する人は、もっと効率が良い方法でやるとよいというだけで、 つべこべ言わずに、動作速度重視・効率も良い実装を書いてみろや!
360 名前:デフォルトの名無しさん [2006/09/08(金) 17:25:37 ] >>355 そりゃ、>>353 の前半よりも、>>354 の方が効率が良いからだろ。 これの意味が分からないけど、何を根拠にそういえるの?
361 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 17:27:57 ] へー、Javaのネットワークって感情で書くのか
362 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 17:29:35 ] 逃げてばかりで またまたワロタ
363 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 17:41:25 ] へー、Javaのネットワークってテイラー展開で書くのかですが、何か?
364 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 17:47:04 ] ストリームからのデータ読み取りはニュートン法で収束させますが何か?
365 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 18:03:27 ] 収束ということは、零点がある保障はどこでわかるの?
366 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 18:17:37 ] >>364 読み取りは微分できるの?
367 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 18:25:09 ] よっぽど悔しかったんだろうな…
368 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 18:43:38 ] テイラー級数?
369 名前:デフォルトの名無しさん [2006/09/08(金) 20:30:27 ] 今日も風俗行かないで、こっちを覗いてみたけど いつまでも恥ずかしい奴だな オレの代わりに、誰でもいいから奴をグーで殴ってくれないか?
370 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 22:02:49 ] 1バイト読みはバカのやることです。
371 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 22:23:33 ] 1ビット読みは学生はやらないことです。
372 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 02:44:55 ] かっこだけつけて何も作れない奴って、一番かっこ悪いんだなぁ〜 と思った。
373 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 08:57:00 ] >>372 お前も現状口だけだけどな。
374 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 09:41:53 ] とりあえずおこちゃまはAPIとドキュメントの違いくらい理解してくれ
375 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 09:59:48 ] >>374 お前はほんとに口だけだな。
376 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 12:12:41 ] ところで、彼は尻切れになる事を理解とか納得とかできたのだろうか?
377 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 12:59:07 ] 低能、気違いの類いは放置推奨
378 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 22:08:44 ] 風俗にも行かないで ストレスのはけ口がない おばちゃんたちと同じのが どこにでもいるんだな〜
379 名前:デフォルトの名無しさん mailto:sage [2006/09/10(日) 00:20:26 ] >>376 出来なかったんじゃないの?ところで君は理解できたの?
380 名前:デフォルトの名無しさん mailto:sage [2006/09/10(日) 17:43:39 ] >>341 readのスニペット提示ありがとうございます。 これはストリームで良く使うパターンだった事を忘れてました。 >>337 それとavailable()の提示も参考になりました。
381 名前:デフォルトの名無しさん mailto:sage [2006/09/10(日) 20:57:01 ] available()のAPIにある >戻り値: ブロックしないで入力ストリームから読み込むことができるバイト数 このブロックって具体的に何の事ですか?
382 名前:デフォルトの名無しさん mailto:sage [2006/09/10(日) 22:36:26 ] www.google.co.jp/search?q=socket+%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF
383 名前:デフォルトの名無しさん mailto:sage [2006/09/11(月) 00:20:37 ] >>382 どうも!
384 名前:デフォルトの名無しさん mailto:sage [2006/09/11(月) 06:37:01 ] でんでん!
385 名前:デフォルトの名無しさん mailto:sage [2006/09/11(月) 15:34:34 ] >>359 >>355 >知ってると思うけど、 >int InputStream#read(byte[],int,int) は >int InputStream#read()を内部で回している使っているだけだぞ。 InputStreamではそうだが、SocketInputStreamでは、 int read(byte[], int, int)がint read()を呼び出すわけだが。 少なくともSun Javaの1.5.0では。 どこかで、ネットワークの話から、ジェネリックなInputStreamの話に遷移してたのか?
386 名前:デフォルトの名無しさん mailto:sage [2006/09/11(月) 18:16:11 ] でんでんだからじゃねーの ところで、でんでんってなんだよ!
387 名前:デフォルトの名無しさん mailto:sage [2006/09/11(月) 19:40:49 ] >>385 お前は頭わるそうだな
388 名前:デフォルトの名無しさん mailto:sage [2006/09/12(火) 01:49:48 ] >>385 何を聞きたいの分からないんだけど、聞きたい事はそんなに大事なのか?
389 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 23:20:00 ] Socket soc=new Socket(host,port); BufferedOutputStream buffOut=new BufferedOutputStream(soc.getOutputStream ()); PrintStream out=new PrintStream (buffOut); soc.close()とやると、自動でout.close()、buffOut.close()になるのでしょうか? たとえばラップしているbuffOut.close()だとout.close()まではならないと思うのですけど。 よろしければご指導お願いします。
390 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 23:36:28 ] よく考えると、自分で試せばいいことでした スマソ
391 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 01:27:29 ] 試して分からなかったら聞けばいい 間違いを自分で認めることはエライ
392 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 01:46:44 ] ソケットを使って、サーバーからクライアントに0.1秒ごとにデータを送信することを考えています。 それで↓こんな感じのを書いたんですが… while (true) { out.writeByte(…); out.flush(); Thread.sleep(100); } クライアントにデータが届くときに、0.2秒ごとに送信2回分のデータが固まって来てしまうんです。 試しに送信周期を30ミリ秒にしてみたらやっぱり0.2秒ごとに固まって来ました。 これは仕様ですか?
393 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 02:00:51 ] 始めの質問でoutとinで多少違いますが、 soc.close()ではjava.io.*関係は閉じませんでした。 in.close(); soc.close(); が作法のようです。 soc.close(); in.close(); b=in.read(); Exception in thread "main" java.io.IOException: Stream closed at java.io.BufferedInputStream.getBufIfOpen(Unknown Source) at java.io.BufferedInputStream.fill(Unknown Source) at java.io.BufferedInputStream.read(Unknown Source) at java.io.FilterInputStream.read(Unknown Source) at k.main(k.java:22) soc.close(); b=in.read(); in.close(); Exception in thread "main" java.net.SocketException: socket closed at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at java.io.BufferedInputStream.fill(Unknown Source) at java.io.BufferedInputStream.read(Unknown Source) at java.io.FilterInputStream.read(Unknown Source) at k.main(k.java:22)
394 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 08:38:08 ] >>392 java.net.Socketのリファレンスを読んで。 TCP_NODELAYのところ。
395 名前:392 mailto:sage [2006/09/14(木) 22:32:57 ] >>394 解決しました! ありがとうございました。
396 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 05:48:39 ] 風俗?女?流行?
397 名前:デフォルトの名無しさん [2006/09/16(土) 06:04:33 ] スニペットってC$のか?
398 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 12:02:54 ] リアルタイムOSでもなければ0.1秒おきに送信って厳しいなあ。 ヒント:JavaVMを含む世の中のOSのほとんどはプリエンプティブ処理。
399 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 12:13:21 ] >>398 引っ込め
400 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 12:16:38 ] RMI使ってる人いる? EJB使ってる人は居ても RMIをそのまま使う人に会ったことない
401 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 12:29:18 ] オブジェクト指向な環境では、 直接叩くより、どんどんクラスライブラリをため込んでいく流儀。 ミドルウェア書く人以外は、直接使わないのが多くても何の不思議はない。
402 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 13:08:17 ] JavaでP2Pのネットゲーム作るなら一番現実的なのがRMIだと思うんだけどね。
403 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 17:16:53 ] RMI使ってるよ。
404 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 17:37:29 ] ホントJAVAってお猿さん向けだなあ
405 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 18:03:31 ] >>404 Javaが嫌になったんですけど、どれに乗り換えればいいでしょうか? 当然ネットーワークが中心です。
406 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 19:56:39 ] 嫌になったとか、乗り換えるとか、 そういう選択肢があるってことはホビー用途かい? だったら別になんでもいいんじゃね? 動かなくてもいいんだし。
407 名前:デフォルトの名無しさん [2006/12/02(土) 12:43:46 ] javaの代わりったって、c/c++とかたくさんあるでしょう。 tomcatとかの代用は難しいかもしれないけど
408 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 16:51:35 ] LISPにでもしておけ。
409 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 19:24:38 ] RUBYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
410 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 19:35:08 ] perlwwwww
411 名前:デフォルトの名無しさん [2006/12/03(日) 21:10:57 ] LimeWireの検索機能って、どーやってるんですか? Winnyは、IPアドレスを暗号化したノードを使ってますが、 LimeWireにはそれがありません。 まさか、IPアドレスを適当に作って相手がLimeWireを起動してるかチェックなんてことはやってないだろし。
412 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 21:20:19 ] HTTPってクラアントの送信データを全部受け取りましたってのを特定できないの? それともContent-Lengthが必ず付いてるのが前提だった? 生ソケットで作ってていっこうにinputを切断してこないから良く分からない。
413 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 00:04:20 ] 1.0なら送り終わったらぶち切って良いよ。 HTTPのRFCぐらい読めよ。
414 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 16:25:11 ] >>412 この頃は 1.1 だからな。普通切れない。長さは content-length だ。
415 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 20:21:35 ] >>413 すまんね、そのうち読んでみる。 >>414 ありがとう、助かったよ。
416 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 22:51:28 ] chunked転送にも注意汁
417 名前:デフォルトの名無しさん [2007/02/01(木) 15:12:23 ] winxp sp2, jdk6で 勉強にネットワークスキャナのようなものを書いています。 ソケットを開く時にタイムアウトを設定したいんですが、 try{ Socket hoge = new Socket(); hoge.connect(new InetSocketAddress(url, port), 1000); }catch(SocketTimeoutException e ){ }catch(IOException e ){ }finnaly{ if(soket != null){ socket.close(); } } っていうような感じで複数スレッドで回しているのですが、 存在しないアドレスだとSocketTimeoutExceptionを出した後に、 SYN_SENTが20秒ほど残ったままになります。 存在しないアドレスが複数あると、SP2のharf-open 10個制限に引っかかって 20秒たってSYN_SENTが消えるまで次のconnectがブロックされてしまいます。 こういうもんなのでしょうか???
418 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 23:52:48 ] IPアドレスやユーザーが使っているパソコンや携帯電話などを見分けて タグを書き換えるということは可能ですか? ケータイ空のアクセスは <mova.html>でリンク <PC.html>からアクセスしたときだけタグを<pc.html>へ変更 おんなじページでもIPでリンク先のタグを書き換える仕様にしたいのですが
419 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 20:26:29 ] >>418 CGIかSSIの仕組み(あるいはSSIを利用した言語。PHPなど)を使えばできる。 JavaScript でもできないことはないかな。携帯では JavaScript は動かない ものと考えて <noscript> に携帯用リンクを入れておくとかね。 (あ、でも、この頃はフルブラウザがあるのか)
420 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 21:14:15 ] なんでjavaスレで?って感じなんだけど Strutsとかでも簡単に出来るよ
421 名前:デフォルトの名無しさん mailto:sage [2007/02/11(日) 19:34:27 ] >>419 ケータイからのアクセス元のIPアドレスなんて、全キャリアあわせてもクラスCで数十程度だから、 ソースIPアドレス見て、初っ端からケータイ用にページ生成すればOKだと思う。
422 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 16:44:13 ] 質問させてください。 ただいま、ソケットを使って、ローカルにあるxmlファイルを表示するHTTPサーバを作っています。 ところが、転送の途中で接続が切れてしまう現象に困っています。 転送したいxml のファイルサイズは25kBです。 はじめはperlで書いていたのですが、そのときも同じ症状に悩まされ、 chunkedすれば直るかと思い、javaに移行したのですが、それでも同じ症状がでます。 何が原因なのかわからず、困り果てている状況です。 以下に、出力まわりのコードを載せてみますので、何か気づいた事があれば、教えていただけないでしょうか。 お願いします。
423 名前:422 mailto:sage [2007/03/05(月) 16:45:02 ] // 出力ストリーム BufferedOutputStream buf = new BufferedOutputStream(socket.getOutputStream()); PrintStream out1 = new PrintStream(buf); ChunkedOutputStream out = new ChunkedOutputStream(out1,2000); // HTTP ヘッダ String writeStr=""; writeStr += ("HTTP/1.1 200 OK\n"); writeStr += ("Connection: close\n"); writeStr += ("Transfer-Encoding: chunked\n"); writeStr += ("Content-Type: text/xml; charset=utf-8"); writeStr += ("\r\n\r\n"); buf.write(writeStr.getBytes()); // 入力ストリーム in から出力 writeStr=""; String inputLine; while ((inputLine = in.readLine()) != null) { writeStr += inputLine; } out.write(writeStr.getBytes());
424 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 18:31:46 ] >>423 close() が書いてないけど…… まさか close() してないとか、そんな阿呆なミスじゃないよね? charset=utf-8 ってやっておいて str.getBytes() は詐欺だろう。getBytes("utf-8") とかしないと。 ヘッダって "\r\n" で区切るんじゃなかったけか? "\n" で区切ってるように見えるが。 PrintStream は使うな。例外発生しても、どんな例外が発生したかわからん。 out, out1, buf があるのは良いけど、out 作ったなら out以外から出力するのは止めろ。
425 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 22:55:51 ] chunkedなのにchunk-sizeがない?
426 名前:422 mailto:sage [2007/03/06(火) 16:38:03 ] >>424 close()は書いてありませんが、してあります。 また、4点のご指摘ありがとうございます。 getByte()の件、ヘッダの区切り文字の件("\r\n")、指摘のように直しました。 ただ、PrintStreamは使わないようにとの件に関しまして、 使わないほうがいいという事は知りませんでしたが、 ChunkedOutputStreamの引数がPrintStreamになっておりますので、そのようにしている次第です。 ( import sun.net.www.http.ChunkedOutputStream; ) また、out以外 ( buf ) から出力させたのは、HTTPヘッダをチャンクさせない苦肉の策でした。 現在、ChunkedOutputStreamを使い続けるかどうかも含めて検討中です。 >>425 chunk-sizeなどは、ChunkedOutputStreamに任せました。 chunk-size \r\n *chunk のような形で出力されているようです。 RFCのデコーダ例を見る限り、その形で大丈夫だと思っています。 // ローカルのapacheに xml を転送させてみたら、chunk-sizeがファイルサイズ!一発で送ってました。 orz // ストリームのバッファサイズの問題、ソケット生成時の諸変数の問題、その他の問題 // またまた、問題がどこにあるのか分からなくなってまいりました。 // ちなみに、サーバの主要部は JavaWorldの記事を参考にしています。 ttp://www.javaworld.jp/technology_and_programming/-/19362-1.html
427 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 00:40:51 ] 一度、全部手で作ってみたほうがよくねえかなあ
428 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 22:29:52 ] ChunkedOutputStreamはJakarta CommonsのIOかLangにも入ってなかったかな。 Commons HTTPClientとかにも入ってるかも。 自分は知らないで自作したクチだが。
429 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 21:48:04 ] >>423 ChunkedOutputStreamが何者か判らないけど、 >out.write(writeStr.getBytes()); の後にout.flush()はやっているよな? out1は自動的にフラッシュされないぞ。
430 名前:デフォルトの名無しさん [2007/04/19(木) 22:24:33 ] ブレードサーバをクラスタ化してJavaでゲームサーバとかって もうそろそろ現実的な組み合わせだと思うけど、事例って無いのかな
431 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 10:14:37 ] クラスタ化するのにジャバが有効な理由って何?
432 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 15:15:58 ] JMXつかえば、SNMPマネージャでクラスタ全体の健全性チェックするのが楽とか。 そういうことかなー。
433 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 18:57:48 ] アプリケーションライフサイクルから言えば、速さより早さってのがあるしね。 C10Kには耐えられることが証明されてるし、 パターンプログラミングに造詣が深くて再開発に強いJavaはゲーム向きかも。
434 名前:デフォルトの名無しさん [2007/06/26(火) 14:41:00 ] SUNのdarkstarとかって成果でてる?
435 名前:デフォルトの名無しさん [2007/07/13(金) 00:20:58 ] ファイル転送ソフトを作りたいけどどこから始めたらいいかわからんな・・・ 今日書店にいって色々探してきたんだけどソケットとRMIのどちらかを使えばいいみたいだけど
436 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 02:23:58 ] 転送の方法にもよるけど、基本的にファイルコピーするのと変わらんよ。
437 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 02:31:33 ] ネットワーク越のファイルでtailとか可能ですか?
438 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 09:39:08 ] >>435 RMIだとrmiregistryが必要になるよ? >>437 ファイルってことは、一般的な意味でのネットワークファイルシステム越しのアクセス?なら そのファイルシステムの機能次第。
439 名前:デフォルトの名無しさん [2007/07/16(月) 22:50:32 ] [クライアント] - [ファイアウォール] - [サーバ] ファイアウォールでサーバからクライアントへの接続確立できないようになってる場合、 Socket通信でDataInputStreamとDataOutputStreamを使用した通信は可能でしょうか?
440 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 23:01:42 ] Socketで接続できるか否かが問題なのであって、 Data*StreamやReader、Writerのような Streamの修飾クラスにファイアフォールとか関係ないべ。
441 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 00:10:11 ] ここで聞いていいのかわからないけどTomcatに配備してあるjspを Windowsのタスクから定期的にブラウザ通さず実行させることってできる? 一定時間ごとに自動起動したいんだけどどうすればいいかよくわかりません。
442 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 01:55:45 ] てめーでHTTPリクエスト送れ
443 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 04:03:14 ] wgetで監視とかやったなあ
444 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 05:08:07 ] 楽勝
445 名前:デフォルトの名無しさん [2007/08/25(土) 11:40:13 ] サーバからデータを受け取ってチャートを表示するJava Appletがあります。 そのデータを閲覧者に持って行ってほしくないのですがどうしたら良いでしょうか?
446 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 12:02:38 ] 意味解らないけど、生データがクライアントに転送されるのがマズイって事か? それならばサーバーでチャートを作成して画像データなんかにして送るしかないだろ もしくは暗号化して送れ キャプチャされるのはどうにもならんがw
447 名前:445 mailto:sage [2007/08/25(土) 12:29:44 ] >>446 そうです。ありがとうございます。 画像も考えたのですが、 データが多いのでサーバ側で処理することを考えて断念しました。 よって、暗号化を考えてるのですが、 アプレットをデコンパイルされた場合を考えると単純にAESなどでいいのか、 それとも他に良いソリューションがあるのか悩んでしまって。 良い方法があれば教えていただけると嬉しいです。。
448 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 13:01:49 ] >>447 転送しちゃマズイならば転送しないのがベストでしょう 暗号化して転送しても出力するところのクラスを解析されたら生データの抽出は可能でしょ グラフのプロットデータ程度まではサーバーで解析する その後のデータはもれても仕方ない、が妥当なライン 暗号化がアプリケーションの目的なのか、プロットが目的なのかはっきりしないと炎上確定
449 名前:445 mailto:sage [2007/08/25(土) 13:12:10 ] >>448 画像を生成せず出来る範囲で生データの解析を防ぎたいと思っています。 プロットデータまでの用意という方法は思いつきませんでした、ありがとうございます。
450 名前:デフォルトの名無しさん [2007/09/04(火) 07:25:49 ] データ用のclassファイルを、サーバで動的生成すれば? ttp://java-source.net/open-source/bytecode-libraries ここら辺で簡単にできるし。 まあ、逆コンパイルしたら一発で見えちゃうけど。
451 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 18:37:03 ] ftpファイル送受信クラスつくってるんだけど、 UnixとWindowsでseparatorCharがちがうと思うのだけど サーバのseparatorCharってどうやったら取得できますか?
452 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 22:10:38 ] PWD してみれば現在のパスが返るから、それ解析すればいいんじゃないかな
453 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 17:13:32 ] >>451 オプションで変えられるようにして決め打ちでいいんじゃね? 特定の用途であるならば、相手は決まっているだろうし
454 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 12:14:40 ] >>434 darkstarは少し聞くけど、Butterfly Gridって全然話を聞かないね。 重い技術・大きい技術は変化に付いていけなくて駄目だと思う。 自分も数年前は3年間ほど重い技術ばかりやってたけど 勉強にはなったけど無駄に終わった。 今は、NIOとGrizzlyとHadoop辺りに力を入れた方がいいと思う。
455 名前:デフォルトの名無しさん [2007/10/24(水) 18:00:42 ] 風俗勤務女= 魔界 ◆RC3h9.WHho = 東芝産業システム社
456 名前:デフォルトの名無しさん [2007/11/01(木) 09:07:35 ] 昨日、Java質問スレにて、レスがつかなかったので、こちらで質問させてください。 DatagramSocket.setTrafficClassをWindows2003のIPv6環境で使用された方はいらっしゃいますでしょうか? IPv4環境ではTPCヘッダのTOSフィールドに値がセットされますが、IPv6環境でTrafficClassフィールドに値が設定されません。
457 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 10:30:47 ] JavaDocは読んだか? |IP (Internet Protocol) バージョン 6 の場合、tc は IP ヘッダの sin6_flowinfo フィールドに格納される値です。
458 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 10:47:16 ] 初めてSocket使ったプログラム組んでみたが、送信がうまくいきません。 何がまずいか分かる人いるでしょうか? ちなみに、Windowsのtelnetで接続したときはうまくいったので、サーバは問題ないと思います。 // 接続 Socket socket = new Socket(host, port); // 出力ストリーム OutputStream out = socket.getOutputStream(); // 標準入力 BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); // 標準入力から1行読み、送信 out.write(stdin.readLine().getBytes()); out.flush();
459 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 11:04:32 ] >>458 「うまくいかない」とは? コンパイルエラーなのか、実行時例外なのか? 例外ならば例外を書け 例外が起きないならば、System.outでどこまで処理が進んでいるかを確認しろ 話はそれからだ
460 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 11:38:32 ] 例外は生じませんし、どこかで止まるわけでもないのです。 サーバはまず、ユーザ名の入力を求めるのですが、out.write でユーザ名を送信してもレスポンスがありません サーバからのメッセージは in.read で受信できるんですが、、、
461 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 11:53:44 ] 止まらないって事は、stdin.readLineを抜けているんだろ? つまり、標準入力から受け付けてないって事にならないか?
462 名前:デフォルトの名無しさん [2007/11/01(木) 12:30:46 ] >>457 殿 ありがとうございます。 確かにそのように記載されておりました。 パケットをキャプチャして確認してみます。 そこで疑問です。 1.sin6_flowinfoとはTCPヘッダのどの部分を指すのでしょうか? TCPヘッダを調べてみても該当する名前が見つけられません。 2.調べたところでは、「TOSはIPv6ではTrafficClassに置き換えられた」と ありましたので、てっきりTrafficClassに格納されると考えておりましたが、 IPv6のTrafficClassに値を設定する方法はあるのでしょうか?
463 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 12:31:03 ] 改行(=Enterキー)を送信してない気がする
464 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 20:23:02 ] >>463 ソレダ!どーやんの><
465 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 21:00:40 ] 事故解決しますた
466 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 21:03:43 ] してないです>< たすけて><;
467 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 22:15:35 ] out.write('\n');
468 名前:459 mailto:sage [2007/11/02(金) 00:16:12 ] 改行を送信してないって、相手もreadLineかよ 送信側をOutputStreamではなくて、PrintWriter使え そうすりゃ、相手もreadLineでOKだ
469 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 05:15:41 ] >>468 ありがとうございます 調べてみます
470 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 01:02:08 ] 「送信元が flush していない」に清き一票
471 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 01:36:28 ] flushはしているじゃん 改行コードまでwriteしているつもりなんだよ、たぶん
472 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 03:58:23 ] >>471 よく分からんくなって来た。 あのプログラムはいったいどちら側のプログラム? クライアント側? だとすると telnet で接続したとか言うのはどういう事?
473 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 09:03:47 ] >458にしか解らんよ それにサーバーは問題ないって書いてあるけど、サーバーとクライアントはセットでみないと通信が上手くいっているかなんかわかんね 少なくとも鯖がreadLineしてたら永遠に改行コードこなくて鯖がブロックされているはず
474 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 03:22:58 ] えっと、もともとTelnetで接続を受け付けてるサーバに接続するクライアントをJavaで書こうと思ったんです
475 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 10:24:46 ] PrintWriter使ったら解決しました
476 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:59:33 ] >>475 outをPrintWriterでラップしたってこと? PrintWriterは環境依存だから、BufferedWriter/Readerの組を使った方が良いかと
477 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 06:26:51 ] >>476 PrintWriterは環境依存 ⇒ ウソ
478 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 10:24:31 ] >>477 あれ〜と思ってチェックしてきたら、PrintStreamと混同してました。 スレ汚しすまん
479 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 21:26:17 ] BufferedReaderのreadlnを使えたら便利なんですけど、 プロンプトを待つときなんかは改行コードがついてないので結局readで1文字ずつ読むしかないんですかねぇ?
480 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 08:04:24 ] コンソールの話だとすると、環境によっては改行するまで読み出せないかもね。
481 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:14:56 ] ○×クイズ。×は理由もどうぞ。 1.スーパークラスを拡張してスモールクラスを宣言することができる。 2.クラスに関連づけられているメソッドをインスタンスメソッドという。 3.クラス内に変数を宣言してフィールドとすることができます。 4.例外を送出するにはthrows文を使います。 5.コンストラクタの戻り値は、そのクラスのインスタンスです。 6.java.langパッケージは自動的に取り込まれるので、java.lang.reflectパッケージも自動的に取り込まれる。 7.スレッドを一時停止するにはstop()メソッドを呼び出します。 8.抽象クラスのオブジェクトを作成することはできない。 9.Privateメンバには、クラスの外からアクセスすることができます。 10.引数を持つコンストラクタを作成することもできます。 11.コンストラクタの名前はクラスの名前と同じです。 12.複数のスレッドが共有するフィールドなどを処理する際は、メソッドにsynchronizedを指定します。 13.例外を送出する可能性のあるメソッドにはthrowをつけます。 14.‘A’はStringクラスのインスタンスです。 15.インターフェースのフィールドは定数となる。 16.インターフェースのメソッドは、処理を定義することができない実装メソッドとなる。 17.コンストラクタは、オブジェクトを生成するときに呼び出されます。 18.クラス内に一定の処理をまとめてメソッドとして定義することができます。 19.オブジェクトに関連付けられているフィールドをクラス変数という。 20.スーパークラスのprotectedメンバには、サブクラスからアクセスできる。 21.Publicメンバには、クラスの外からアクセスできる。 22.スーパークラスと同じメソッド名・引数の型・数をもつメソッドをサブクラスで定義して、オーバーロードすることができます。 23.メソッドの呼び出し元は、戻り値を受け取ることができます。 24.クラスに関連づけられているフィールドをインスタンス変数という。 25.クラスは、フィールドとメソッドをもつことができる
482 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:26:10 ] ○×を正反対にして回答しようかと思ったけど止めた。×の理由が面倒だ。 ってかスモールクラスってなんだよww
483 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 10:33:42 ] >>482 吹いたwwwwwwwwww ごめん俺もスモールクラスが理解できん
484 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 11:52:06 ] ひねくれた回答を考えてみる実験 1.○ $ cat *.java public class スーパークラス{} public class スモールクラス extends スーパークラス { public static void main(String[] args){System.out.println("Hello");}} $ javac *.java $ java スモールクラス Hello 2.× 設計上関連付いてても、必ずしもインスタンスメソッドじゃなくても 3.× フィールド宣言がクラス変数になるのであって、その逆じゃない 9.○ リフレクションで出来る 11.× クラスの単純名でなければならず、FQCNは使用できない 12.× synchronized文でもvolatileでも 15.× コンパイル時定数でないフィールドをインタフェースに宣言することもできる interface Foo { double foo = Math.random(); } 17.× newインストラクションでオブジェクトを生成した後コンストラクタを呼ばすにpopインストラクションで捨てることができる気がする 23.× 例外を投げるかもしんないし ・・・いまいち微妙
485 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 07:26:06 ] Javaの仕様に詳しくないやつの作った甘い質問だな。
486 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 10:10:10 ] ですます調とである調が混ざってるので減点 25ってinitializerがあるから×?
487 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:45:31 ] > 10(日) 10:10:10 別に initializer があるにしても、フィールドとメソッドをもつことができることに 変わりはないと思う。 他の問題を含めて、Java でなく日本語の問題になっている部分がある点で、 あまりいい問題じゃないね。
488 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 14:03:19 ] 21. Javaは大文字小文字を区別する。つまりPublicという名前のメンバのアクセス指定による。
489 名前:デフォルトの名無しさん [2008/02/12(火) 07:06:55 ] 今、Javaのnioを使ったServerSocketChannelをselect()で待つサーバーに対して、 C言語で書いたクライアントを接続しようとしてるんですけど。 C言語のconnect()がエラーを返してしまうんです。 これって、JavaがBIG_ENDIAN、C言語がLITTLE_ENDIANで動いてるせいなんですか? 一応、connect()する際のsockaddr_in構造体はport番号をhtonsで ネットワークバイトオーダに変換はしてるんですが...。
490 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 08:42:37 ] 関係ない。 telnetとかでそのポートにつながるか調べてみたら?
491 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 08:49:59 ] >>489 エンディアンが気になるなら、変えてみて試せばいいのに
492 名前:489 [2008/02/12(火) 16:52:25 ] 解決しました。 Cのgethostbyname()の結果がエンディアンの関係でバグってたのが原因でした。 ちなみに、 PowerBook G4(BIG_ENDIAN) --> iMac Intel(LITTLE_ENDIAN)が失敗して、 PowerBook G4(BIG_ENDIAN) --> Power Mac G5(BIG_ENDIAN)が成功してました。 Javaのnioや内部でのバイトオーダー変換に原因があると思ってデバッグしてた自分は一体...。
493 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 13:09:28 ] gethostbynameの結果がバグってるとは、返ってくるものが間違っていると言うこと?
494 名前:デフォルトの名無しさん [2008/02/28(木) 17:57:53 ] 少しわからないことがあるので質問させてもらいます。 今現在java.net.URL()を使ってHTTP通信を行っています。 そこで送信元ポートを指定して、通信を行いたいのですがどのようにすればいいのかがわかりません。 java.net系のリファレンスを見てもよくわかりませんでした。 初歩的な質問かもしれませんがよろしくお願いします。 これは、今のネットワークがあるポートからしかリクエストが飛ばないので、 送信元ポートを指定しなければならないためです。
495 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 18:03:37 ] >>494 URLでは無理 そういう特殊な使い方は想定されてない java.net.Socketを使って自分でHTTPプロトコルを喋れば可能
496 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 19:10:41 ] URLにcreatorなかったっけ
497 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 20:20:23 ] >>494 URLクラスをそのまま利用したいのなら>>496 のいうように 送信元ポートを指定して通信するように実装したURLConnectionのサブクラスを返す URLStreamHandlerのファクトリを作ってURL#setURLStreamHandlerFactoryで設定する。
498 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 20:42:45 ] URLStreamHandler クラスを継承して メソッド protected abstract URLConnection openConnection(URL u) throws IOException をオーバーライドして 送信元ポートを指定して通信するように実装した URLConnection のサブクラスを返せば良いのでしょうか
499 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 20:51:52 ] そうです
500 名前:494 mailto:sage [2008/03/03(月) 11:52:47 ] 遅くなりましたが>>495-499 ありがとうございました。 がんばってみようと思います。
501 名前:そのとおり [2008/09/05(金) 13:19:52 ] そのとおり
502 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 14:09:16 ] URL url = somthing; conn = url.openConnection(); とかある場合, conn.getInputStream() の戻りで返ってくる メソッドの振る舞いをカスタマイズしたいんですけど 何か方法ないですか?
503 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 13:48:51 ] > conn.getInputStream() の戻りで返ってくる > メソッドの振る舞いをカスタマイズしたいんですけど メソッドはメソッドを返せない。 getInputStream()で返ってくるInputStreamオブジェクトの振る舞いを変えたいって意味? どういうカスタマイズをしたいかによるけれど、 getInputStream()が返すInputStreamのメソッドの動作を変えたいのなら、 必要なメソッドをオーバーライドしたFilterInputStreamクラスのサブクラスを作成して、 InputStreamオブジェクトをそのクラスでラップしてやるのがお手軽かも。
504 名前:デフォルトの名無しさん [2008/10/22(水) 14:13:51 ] 今イーサリアルのようなすべてのポートとそこを通るパケットを監視できるようなシステムを作りたいのだけど、 どうしたらイーサリアルみたいなことできるの?あれやり方ぜんぜんわからないんだけど windowsファイアーウォールが関係してる?
505 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 14:43:26 ] Java だけじゃ無理だろ? JNI 使ってドライバ直接叩く気力があれば別だが... Unix 系だと BPF とかだけど, TCP/IP スタックとは 全く別のドライバ実装になってるもん Windows でも事情は似たようなもんだと思うぞ
506 名前:デフォルトの名無しさん [2008/10/22(水) 15:08:31 ] >>505 それは504への・・・でいいのかな? そうだとしてれす やっぱ無理なのか・・・ドライバを監視してるイメージなのかな。あれは。 そっかー。 じゃああるポートをあるポートに結びつけるだけのプロキシをつくりたいの だけど、あ、これならいけそうだ。 でもさ、いちいちプロ棋士のポートをアプリとルータ側で指定しなくちゃならなくなるよね。 何かできない? ルータ5900ポート → 5900プロ棋士5900 → アプリ5900ポート こんな風にはできないよね? プロ棋士でパケットを監視するの。プロ棋士実行してないときは ルータからアプリに直接いくの。
507 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 15:39:38 ] >>504 Windows環境で書くと、まず、winpcapを入れる。 winpcapインストールするとき、スタートアップ時にnpfサービスを自動起動するか 聞かれるので、yesにしておく。 このnpfサービスが生きていれば、packet.dll経由でアクセスして、キャプチャできる。 npfが生きてない場合、管理者権限で、java.exe(javaw.exe)を起動しないといけない。 XPならいいけど、Vistaで面倒なことになる。 あとはjpcap使ってJavaから使う。 もっと細かいことしたければ、packet.dllに直アクセスだけど、JNIよりJNAの方が楽。
508 名前:デフォルトの名無しさん [2008/10/23(木) 12:29:47 ] ヨドバシ.com(www.yodobashi.com )が重くて困っています。 どなたか、原因を探っていただけないでしょうか。 よろしくお願いします。 gimpo.2ch.net/test/read.cgi/kaden/1222787235/l50
509 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 12:31:42 ] プログラミングに関する質問にしてください
510 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 21:38:12 ] >>504 ほいなー。 netresearch.ics.uci.edu/kfujii/jpcap/doc/index.html
511 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 16:44:13 ] Struts と Hibernate が原因で重くなってるって?
512 名前:ともふみ mailto:tomo_deep2@yahoo.co.jp [2008/11/03(月) 11:14:08 ] こんにちは、知史といいます。 あなたの書き込みしたものを拝見させていただきました。 私はハッキングのことについて4か月前からいろいろと考え始めました。 すると、この書き込みを来て是非ハッキングについて詳しく教えていただきたいなと 思いメールをさせていただきました。 よろしければご返事をいただきたいのですが、よろしくお願いします。 小村 知史(コムラ トモフミ)
513 名前:デフォルトの名無しさん [2008/12/16(火) 07:51:13 ] >>401-512 オヤスミ… <⌒/ヽ-、___ /<_/____/  ̄ ̄ ̄ ̄ ̄ ̄ ̄
514 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 17:31:12 ] www.cosmicbreak.jp/home このネトゲはクライアントがjavaとOpenGL、データベースがpostgleSQLで動いてるらしい。 javaって意外と速く動くんだね
515 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 17:42:22 ] スルー推奨
516 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 21:11:43 ] おまえを
517 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 07:17:31 ] ネットワーク処理はMMOまで行くとByteBufferだけで処理してそうだな。 ThreadLocalレベルのシングルトンでByteBufferをラップした擬似パケットクラスを作ってそう。