Java ネットワークプログラミング 【教えて!】
at TECH
[前50を表示]
350:デフォルトの名無しさん
06/09/08 09:52:26
>>329はやさしいなあ
351:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/09/08 10:18:48
> これ、尻切れにはならんかもしれんが、最初に 0が入らんか?
あ、入らないね。失敬失敬。
353:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/09/08 15:41:18
Runtime.exec() で起動した Process のプロセスIDはどうすればわかりますか?
357:デフォルトの名無しさん
06/09/08 17:10:29
>>355
お前はもうしゃしゃり出てこないくていい。
お前は最後まで気がついてないだろうけど、もう解決してるんだよ。
素直に「私だけわからないので、教えてください」と書けこの阿呆が!
>このコードが、「(1000*1000バイトから溢れない範囲で、)ストリームの終わりまで読め」
って勝手に解釈している、あなたが原因です。そんな事はどこから読み取れるのでしょうか?
お前はいつまでも図々しくて頭悪いの分かったから、このスレの初めに戻ってもっと熟読してこい。
ところで、何度も同じことしか書いてないけど、お前は実際に試してないで、勝手なこと言ってるんじゃないのか?
どうも懲りてないようだから、今後はおまえの事を監視して付け狙うしかなさそうだな。
何か起こる前に、せいぜい身近なことに気を配ってた方がいいだろう。
358:デフォルトの名無しさん
06/09/08 17:12:45
またまたワロタ
359:デフォルトの名無しさん
06/09/08 17:23:26
>355
知ってると思うけど、
int InputStream#read(byte[],int,int) は
int InputStream#read()を内部で回している使っているだけだぞ。
サブクラスで実装する人は、もっと効率が良い方法でやるとよいというだけで、
つべこべ言わずに、動作速度重視・効率も良い実装を書いてみろや!
360:デフォルトの名無しさん
06/09/08 17:25:37
>>355そりゃ、>>353の前半よりも、>>354の方が効率が良いからだろ。
これの意味が分からないけど、何を根拠にそういえるの?
361:デフォルトの名無しさん
06/09/08 17:27:57
へー、Javaのネットワークって感情で書くのか
362:デフォルトの名無しさん
06/09/08 17:29:35
逃げてばかりで
またまたワロタ
363:デフォルトの名無しさん
06/09/08 17:41:25
へー、Javaのネットワークってテイラー展開で書くのかですが、何か?
364:デフォルトの名無しさん
06/09/08 17:47:04
ストリームからのデータ読み取りはニュートン法で収束させますが何か?
365:デフォルトの名無しさん
06/09/08 18:03:27
収束ということは、零点がある保障はどこでわかるの?
366:デフォルトの名無しさん
06/09/08 18:17:37
>>364読み取りは微分できるの?
367:デフォルトの名無しさん
06/09/08 18:25:09
よっぽど悔しかったんだろうな…
368:デフォルトの名無しさん
06/09/08 18:43:38
テイラー級数?
369:デフォルトの名無しさん
06/09/08 20:30:27
今日も風俗行かないで、こっちを覗いてみたけど
いつまでも恥ずかしい奴だな
オレの代わりに、誰でもいいから奴をグーで殴ってくれないか?
370:デフォルトの名無しさん
06/09/08 22:02:49
1バイト読みはバカのやることです。
371:デフォルトの名無しさん
06/09/08 22:23:33
1ビット読みは学生はやらないことです。
372:デフォルトの名無しさん
06/09/09 02:44:55
かっこだけつけて何も作れない奴って、一番かっこ悪いんだなぁ〜
と思った。
373:デフォルトの名無しさん
06/09/09 08:57:00
>>372
お前も現状口だけだけどな。
374:デフォルトの名無しさん
06/09/09 09:41:53
とりあえずおこちゃまはAPIとドキュメントの違いくらい理解してくれ
375:デフォルトの名無しさん
06/09/09 09:59:48
>>374
お前はほんとに口だけだな。
376:デフォルトの名無しさん
06/09/09 12:12:41
ところで、彼は尻切れになる事を理解とか納得とかできたのだろうか?
377:デフォルトの名無しさん
06/09/09 12:59:07
低能、気違いの類いは放置推奨
378:デフォルトの名無しさん
06/09/09 22:08:44
風俗にも行かないで
ストレスのはけ口がない
おばちゃんたちと同じのが
どこにでもいるんだな〜
379:デフォルトの名無しさん
06/09/10 00:20:26
>>376出来なかったんじゃないの?ところで君は理解できたの?
380:デフォルトの名無しさん
06/09/10 17:43:39
>>341 readのスニペット提示ありがとうございます。
これはストリームで良く使うパターンだった事を忘れてました。
>>337 それとavailable()の提示も参考になりました。
381:デフォルトの名無しさん
06/09/10 20:57:01
available()のAPIにある
>戻り値: ブロックしないで入力ストリームから読み込むことができるバイト数
このブロックって具体的に何の事ですか?
382:デフォルトの名無しさん
06/09/10 22:36:26
URLリンク(www.google.co.jp)
383:デフォルトの名無しさん
06/09/11 00:20:37
>>382どうも!
384:デフォルトの名無しさん
06/09/11 06:37:01
でんでん!
385:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/09/11 18:16:11
でんでんだからじゃねーの
ところで、でんでんってなんだよ!
387:デフォルトの名無しさん
06/09/11 19:40:49
>>385
お前は頭わるそうだな
388:デフォルトの名無しさん
06/09/12 01:49:48
>>385
何を聞きたいの分からないんだけど、聞きたい事はそんなに大事なのか?
389:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/09/13 23:36:28
よく考えると、自分で試せばいいことでした
スマソ
391:デフォルトの名無しさん
06/09/14 01:27:29
試して分からなかったら聞けばいい
間違いを自分で認めることはエライ
392:デフォルトの名無しさん
06/09/14 01:46:44
ソケットを使って、サーバーからクライアントに0.1秒ごとにデータを送信することを考えています。
それで↓こんな感じのを書いたんですが…
while (true) {
out.writeByte(…);
out.flush();
Thread.sleep(100);
}
クライアントにデータが届くときに、0.2秒ごとに送信2回分のデータが固まって来てしまうんです。
試しに送信周期を30ミリ秒にしてみたらやっぱり0.2秒ごとに固まって来ました。
これは仕様ですか?
393:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/09/14 08:38:08
>>392
java.net.Socketのリファレンスを読んで。
TCP_NODELAYのところ。
395:392
06/09/14 22:32:57
>>394
解決しました!
ありがとうございました。
396:デフォルトの名無しさん
06/09/15 05:48:39
風俗?女?流行?
397:デフォルトの名無しさん
06/09/16 06:04:33
スニペットってC$のか?
398:デフォルトの名無しさん
06/09/16 12:02:54
リアルタイムOSでもなければ0.1秒おきに送信って厳しいなあ。
ヒント:JavaVMを含む世の中のOSのほとんどはプリエンプティブ処理。
399:デフォルトの名無しさん
06/09/16 12:13:21
>>398
引っ込め
400:デフォルトの名無しさん
06/09/16 12:16:38
RMI使ってる人いる?
EJB使ってる人は居ても
RMIをそのまま使う人に会ったことない
401:デフォルトの名無しさん
06/09/16 12:29:18
オブジェクト指向な環境では、
直接叩くより、どんどんクラスライブラリをため込んでいく流儀。
ミドルウェア書く人以外は、直接使わないのが多くても何の不思議はない。
402:デフォルトの名無しさん
06/09/16 13:08:17
JavaでP2Pのネットゲーム作るなら一番現実的なのがRMIだと思うんだけどね。
403:デフォルトの名無しさん
06/09/16 17:16:53
RMI使ってるよ。
404:デフォルトの名無しさん
06/09/16 17:37:29
ホントJAVAってお猿さん向けだなあ
405:デフォルトの名無しさん
06/09/16 18:03:31
>>404
Javaが嫌になったんですけど、どれに乗り換えればいいでしょうか?
当然ネットーワークが中心です。
406:デフォルトの名無しさん
06/09/16 19:56:39
嫌になったとか、乗り換えるとか、
そういう選択肢があるってことはホビー用途かい?
だったら別になんでもいいんじゃね?
動かなくてもいいんだし。
407:デフォルトの名無しさん
06/12/02 12:43:46
javaの代わりったって、c/c++とかたくさんあるでしょう。
tomcatとかの代用は難しいかもしれないけど
408:デフォルトの名無しさん
06/12/02 16:51:35
LISPにでもしておけ。
409:デフォルトの名無しさん
06/12/02 19:24:38
RUBYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
410:デフォルトの名無しさん
06/12/02 19:35:08
perlwwwww
411:デフォルトの名無しさん
06/12/03 21:10:57
LimeWireの検索機能って、どーやってるんですか?
Winnyは、IPアドレスを暗号化したノードを使ってますが、
LimeWireにはそれがありません。
まさか、IPアドレスを適当に作って相手がLimeWireを起動してるかチェックなんてことはやってないだろし。
412:デフォルトの名無しさん
06/12/03 21:20:19
HTTPってクラアントの送信データを全部受け取りましたってのを特定できないの?
それともContent-Lengthが必ず付いてるのが前提だった?
生ソケットで作ってていっこうにinputを切断してこないから良く分からない。
413:デフォルトの名無しさん
06/12/04 00:04:20
1.0なら送り終わったらぶち切って良いよ。
HTTPのRFCぐらい読めよ。
414:デフォルトの名無しさん
06/12/06 16:25:11
>>412
この頃は 1.1 だからな。普通切れない。長さは content-length だ。
415:デフォルトの名無しさん
06/12/06 20:21:35
>>413
すまんね、そのうち読んでみる。
>>414
ありがとう、助かったよ。
416:デフォルトの名無しさん
06/12/07 22:51:28
chunked転送にも注意汁
417:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/02/02 23:52:48
IPアドレスやユーザーが使っているパソコンや携帯電話などを見分けて
タグを書き換えるということは可能ですか?
ケータイ空のアクセスは <mova.html>でリンク
<PC.html>からアクセスしたときだけタグを<pc.html>へ変更
おんなじページでもIPでリンク先のタグを書き換える仕様にしたいのですが
419:デフォルトの名無しさん
07/02/09 20:26:29
>>418
CGIかSSIの仕組み(あるいはSSIを利用した言語。PHPなど)を使えばできる。
JavaScript でもできないことはないかな。携帯では JavaScript は動かない
ものと考えて <noscript> に携帯用リンクを入れておくとかね。
(あ、でも、この頃はフルブラウザがあるのか)
420:デフォルトの名無しさん
07/02/09 21:14:15
なんでjavaスレで?って感じなんだけど
Strutsとかでも簡単に出来るよ
421:デフォルトの名無しさん
07/02/11 19:34:27
>>419
ケータイからのアクセス元のIPアドレスなんて、全キャリアあわせてもクラスCで数十程度だから、
ソースIPアドレス見て、初っ端からケータイ用にページ生成すればOKだと思う。
422:デフォルトの名無しさん
07/03/05 16:44:13
質問させてください。
ただいま、ソケットを使って、ローカルにあるxmlファイルを表示するHTTPサーバを作っています。
ところが、転送の途中で接続が切れてしまう現象に困っています。
転送したいxml のファイルサイズは25kBです。
はじめはperlで書いていたのですが、そのときも同じ症状に悩まされ、
chunkedすれば直るかと思い、javaに移行したのですが、それでも同じ症状がでます。
何が原因なのかわからず、困り果てている状況です。
以下に、出力まわりのコードを載せてみますので、何か気づいた事があれば、教えていただけないでしょうか。
お願いします。
423:422
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/03/05 22:55:51
chunkedなのにchunk-sizeがない?
426:422
07/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の記事を参考にしています。
URLリンク(www.javaworld.jp)
427:デフォルトの名無しさん
07/03/07 00:40:51
一度、全部手で作ってみたほうがよくねえかなあ
428:デフォルトの名無しさん
07/03/19 22:29:52
ChunkedOutputStreamはJakarta CommonsのIOかLangにも入ってなかったかな。
Commons HTTPClientとかにも入ってるかも。
自分は知らないで自作したクチだが。
429:デフォルトの名無しさん
07/04/16 21:48:04
>>423
ChunkedOutputStreamが何者か判らないけど、
>out.write(writeStr.getBytes());
の後にout.flush()はやっているよな?
out1は自動的にフラッシュされないぞ。
430:デフォルトの名無しさん
07/04/19 22:24:33
ブレードサーバをクラスタ化してJavaでゲームサーバとかって
もうそろそろ現実的な組み合わせだと思うけど、事例って無いのかな
431:デフォルトの名無しさん
07/04/24 10:14:37
クラスタ化するのにジャバが有効な理由って何?
432:デフォルトの名無しさん
07/04/24 15:15:58
JMXつかえば、SNMPマネージャでクラスタ全体の健全性チェックするのが楽とか。
そういうことかなー。
433:デフォルトの名無しさん
07/04/24 18:57:48
アプリケーションライフサイクルから言えば、速さより早さってのがあるしね。
C10Kには耐えられることが証明されてるし、
パターンプログラミングに造詣が深くて再開発に強いJavaはゲーム向きかも。
434:デフォルトの名無しさん
07/06/26 14:41:00
SUNのdarkstarとかって成果でてる?
435:デフォルトの名無しさん
07/07/13 00:20:58
ファイル転送ソフトを作りたいけどどこから始めたらいいかわからんな・・・
今日書店にいって色々探してきたんだけどソケットとRMIのどちらかを使えばいいみたいだけど
436:デフォルトの名無しさん
07/07/13 02:23:58
転送の方法にもよるけど、基本的にファイルコピーするのと変わらんよ。
437:デフォルトの名無しさん
07/07/13 02:31:33
ネットワーク越のファイルでtailとか可能ですか?
438:デフォルトの名無しさん
07/07/13 09:39:08
>>435
RMIだとrmiregistryが必要になるよ?
>>437
ファイルってことは、一般的な意味でのネットワークファイルシステム越しのアクセス?なら
そのファイルシステムの機能次第。
439:デフォルトの名無しさん
07/07/16 22:50:32
[クライアント] - [ファイアウォール] - [サーバ]
ファイアウォールでサーバからクライアントへの接続確立できないようになってる場合、
Socket通信でDataInputStreamとDataOutputStreamを使用した通信は可能でしょうか?
440:デフォルトの名無しさん
07/07/16 23:01:42
Socketで接続できるか否かが問題なのであって、
Data*StreamやReader、Writerのような
Streamの修飾クラスにファイアフォールとか関係ないべ。
441:デフォルトの名無しさん
07/07/18 00:10:11
ここで聞いていいのかわからないけどTomcatに配備してあるjspを
Windowsのタスクから定期的にブラウザ通さず実行させることってできる?
一定時間ごとに自動起動したいんだけどどうすればいいかよくわかりません。
442:デフォルトの名無しさん
07/07/18 01:55:45
てめーでHTTPリクエスト送れ
443:デフォルトの名無しさん
07/07/18 04:03:14
wgetで監視とかやったなあ
444:デフォルトの名無しさん
07/07/19 05:08:07
楽勝
445:デフォルトの名無しさん
07/08/25 11:40:13
サーバからデータを受け取ってチャートを表示するJava Appletがあります。
そのデータを閲覧者に持って行ってほしくないのですがどうしたら良いでしょうか?
446:デフォルトの名無しさん
07/08/25 12:02:38
意味解らないけど、生データがクライアントに転送されるのがマズイって事か?
それならばサーバーでチャートを作成して画像データなんかにして送るしかないだろ
もしくは暗号化して送れ
キャプチャされるのはどうにもならんがw
447:445
07/08/25 12:29:44
>>446
そうです。ありがとうございます。
画像も考えたのですが、
データが多いのでサーバ側で処理することを考えて断念しました。
よって、暗号化を考えてるのですが、
アプレットをデコンパイルされた場合を考えると単純にAESなどでいいのか、
それとも他に良いソリューションがあるのか悩んでしまって。
良い方法があれば教えていただけると嬉しいです。。
448:デフォルトの名無しさん
07/08/25 13:01:49
>>447
転送しちゃマズイならば転送しないのがベストでしょう
暗号化して転送しても出力するところのクラスを解析されたら生データの抽出は可能でしょ
グラフのプロットデータ程度まではサーバーで解析する
その後のデータはもれても仕方ない、が妥当なライン
暗号化がアプリケーションの目的なのか、プロットが目的なのかはっきりしないと炎上確定
449:445
07/08/25 13:12:10
>>448
画像を生成せず出来る範囲で生データの解析を防ぎたいと思っています。
プロットデータまでの用意という方法は思いつきませんでした、ありがとうございます。
450:デフォルトの名無しさん
07/09/04 07:25:49
データ用のclassファイルを、サーバで動的生成すれば?
URLリンク(java-source.net)
ここら辺で簡単にできるし。
まあ、逆コンパイルしたら一発で見えちゃうけど。
451:デフォルトの名無しさん
07/10/05 18:37:03
ftpファイル送受信クラスつくってるんだけど、
UnixとWindowsでseparatorCharがちがうと思うのだけど
サーバのseparatorCharってどうやったら取得できますか?
452:デフォルトの名無しさん
07/10/05 22:10:38
PWD してみれば現在のパスが返るから、それ解析すればいいんじゃないかな
453:デフォルトの名無しさん
07/10/06 17:13:32
>>451
オプションで変えられるようにして決め打ちでいいんじゃね?
特定の用途であるならば、相手は決まっているだろうし
454:デフォルトの名無しさん
07/10/09 12:14:40
>>434
darkstarは少し聞くけど、Butterfly Gridって全然話を聞かないね。
重い技術・大きい技術は変化に付いていけなくて駄目だと思う。
自分も数年前は3年間ほど重い技術ばかりやってたけど
勉強にはなったけど無駄に終わった。
今は、NIOとGrizzlyとHadoop辺りに力を入れた方がいいと思う。
455:デフォルトの名無しさん
07/10/24 18:00:42
風俗勤務女= 魔界 ◆RC3h9.WHho = 東芝産業システム社
456:デフォルトの名無しさん
07/11/01 09:07:35
昨日、Java質問スレにて、レスがつかなかったので、こちらで質問させてください。
DatagramSocket.setTrafficClassをWindows2003のIPv6環境で使用された方はいらっしゃいますでしょうか?
IPv4環境ではTPCヘッダのTOSフィールドに値がセットされますが、IPv6環境でTrafficClassフィールドに値が設定されません。
457:デフォルトの名無しさん
07/11/01 10:30:47
JavaDocは読んだか?
|IP (Internet Protocol) バージョン 6 の場合、tc は IP ヘッダの sin6_flowinfo フィールドに格納される値です。
458:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/11/01 11:04:32
>>458
「うまくいかない」とは?
コンパイルエラーなのか、実行時例外なのか?
例外ならば例外を書け
例外が起きないならば、System.outでどこまで処理が進んでいるかを確認しろ
話はそれからだ
460:デフォルトの名無しさん
07/11/01 11:38:32
例外は生じませんし、どこかで止まるわけでもないのです。
サーバはまず、ユーザ名の入力を求めるのですが、out.write でユーザ名を送信してもレスポンスがありません
サーバからのメッセージは in.read で受信できるんですが、、、
461:デフォルトの名無しさん
07/11/01 11:53:44
止まらないって事は、stdin.readLineを抜けているんだろ?
つまり、標準入力から受け付けてないって事にならないか?
462:デフォルトの名無しさん
07/11/01 12:30:46
>>457 殿
ありがとうございます。
確かにそのように記載されておりました。
パケットをキャプチャして確認してみます。
そこで疑問です。
1.sin6_flowinfoとはTCPヘッダのどの部分を指すのでしょうか?
TCPヘッダを調べてみても該当する名前が見つけられません。
2.調べたところでは、「TOSはIPv6ではTrafficClassに置き換えられた」と
ありましたので、てっきりTrafficClassに格納されると考えておりましたが、
IPv6のTrafficClassに値を設定する方法はあるのでしょうか?
463:デフォルトの名無しさん
07/11/01 12:31:03
改行(=Enterキー)を送信してない気がする
464:デフォルトの名無しさん
07/11/01 20:23:02
>>463
ソレダ!どーやんの><
465:デフォルトの名無しさん
07/11/01 21:00:40
事故解決しますた
466:デフォルトの名無しさん
07/11/01 21:03:43
してないです><
たすけて><;
467:デフォルトの名無しさん
07/11/01 22:15:35
out.write('\n');
468:459
07/11/02 00:16:12
改行を送信してないって、相手もreadLineかよ
送信側をOutputStreamではなくて、PrintWriter使え
そうすりゃ、相手もreadLineでOKだ
469:デフォルトの名無しさん
07/11/02 05:15:41
>>468
ありがとうございます
調べてみます
470:デフォルトの名無しさん
07/11/04 01:02:08
「送信元が flush していない」に清き一票
471:デフォルトの名無しさん
07/11/04 01:36:28
flushはしているじゃん
改行コードまでwriteしているつもりなんだよ、たぶん
472:デフォルトの名無しさん
07/11/04 03:58:23
>>471
よく分からんくなって来た。
あのプログラムはいったいどちら側のプログラム?
クライアント側?
だとすると telnet で接続したとか言うのはどういう事?
473:デフォルトの名無しさん
07/11/04 09:03:47
>458にしか解らんよ
それにサーバーは問題ないって書いてあるけど、サーバーとクライアントはセットでみないと通信が上手くいっているかなんかわかんね
少なくとも鯖がreadLineしてたら永遠に改行コードこなくて鯖がブロックされているはず
474:デフォルトの名無しさん
07/11/05 03:22:58
えっと、もともとTelnetで接続を受け付けてるサーバに接続するクライアントをJavaで書こうと思ったんです
475:デフォルトの名無しさん
07/11/05 10:24:46
PrintWriter使ったら解決しました
476:デフォルトの名無しさん
07/11/05 23:59:33
>>475
outをPrintWriterでラップしたってこと?
PrintWriterは環境依存だから、BufferedWriter/Readerの組を使った方が良いかと
477:デフォルトの名無しさん
07/11/06 06:26:51
>>476
PrintWriterは環境依存 ⇒ ウソ
478:デフォルトの名無しさん
07/11/06 10:24:31
>>477
あれ〜と思ってチェックしてきたら、PrintStreamと混同してました。
スレ汚しすまん
479:デフォルトの名無しさん
07/11/06 21:26:17
BufferedReaderのreadlnを使えたら便利なんですけど、
プロンプトを待つときなんかは改行コードがついてないので結局readで1文字ずつ読むしかないんですかねぇ?
480:デフォルトの名無しさん
07/11/07 08:04:24
コンソールの話だとすると、環境によっては改行するまで読み出せないかもね。
481:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/02/06 22:26:10
○×を正反対にして回答しようかと思ったけど止めた。×の理由が面倒だ。
ってかスモールクラスってなんだよww
483:デフォルトの名無しさん
08/02/07 10:33:42
>>482
吹いたwwwwwwwwww
ごめん俺もスモールクラスが理解できん
484:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/02/10 07:26:06
Javaの仕様に詳しくないやつの作った甘い質問だな。
486:デフォルトの名無しさん
08/02/10 10:10:10
ですます調とである調が混ざってるので減点
25ってinitializerがあるから×?
487:デフォルトの名無しさん
08/02/10 13:45:31
> 10(日) 10:10:10
別に initializer があるにしても、フィールドとメソッドをもつことができることに
変わりはないと思う。
他の問題を含めて、Java でなく日本語の問題になっている部分がある点で、
あまりいい問題じゃないね。
488:デフォルトの名無しさん
08/02/11 14:03:19
21. Javaは大文字小文字を区別する。つまりPublicという名前のメンバのアクセス指定による。
489:デフォルトの名無しさん
08/02/12 07:06:55
今、Javaのnioを使ったServerSocketChannelをselect()で待つサーバーに対して、
C言語で書いたクライアントを接続しようとしてるんですけど。
C言語のconnect()がエラーを返してしまうんです。
これって、JavaがBIG_ENDIAN、C言語がLITTLE_ENDIANで動いてるせいなんですか?
一応、connect()する際のsockaddr_in構造体はport番号をhtonsで
ネットワークバイトオーダに変換はしてるんですが...。
490:デフォルトの名無しさん
08/02/12 08:42:37
関係ない。
telnetとかでそのポートにつながるか調べてみたら?
491:デフォルトの名無しさん
08/02/12 08:49:59
>>489
エンディアンが気になるなら、変えてみて試せばいいのに
492:489
08/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:デフォルトの名無しさん
08/02/14 13:09:28
gethostbynameの結果がバグってるとは、返ってくるものが間違っていると言うこと?
494:デフォルトの名無しさん
08/02/28 17:57:53
少しわからないことがあるので質問させてもらいます。
今現在java.net.URL()を使ってHTTP通信を行っています。
そこで送信元ポートを指定して、通信を行いたいのですがどのようにすればいいのかがわかりません。
java.net系のリファレンスを見てもよくわかりませんでした。
初歩的な質問かもしれませんがよろしくお願いします。
これは、今のネットワークがあるポートからしかリクエストが飛ばないので、
送信元ポートを指定しなければならないためです。
495:デフォルトの名無しさん
08/02/28 18:03:37
>>494
URLでは無理
そういう特殊な使い方は想定されてない
java.net.Socketを使って自分でHTTPプロトコルを喋れば可能
496:デフォルトの名無しさん
08/02/28 19:10:41
URLにcreatorなかったっけ
497:デフォルトの名無しさん
08/02/28 20:20:23
>>494
URLクラスをそのまま利用したいのなら>>496のいうように
送信元ポートを指定して通信するように実装したURLConnectionのサブクラスを返す
URLStreamHandlerのファクトリを作ってURL#setURLStreamHandlerFactoryで設定する。
498:デフォルトの名無しさん
08/02/28 20:42:45
URLStreamHandler クラスを継承して
メソッド
protected abstract URLConnection openConnection(URL u) throws IOException
をオーバーライドして
送信元ポートを指定して通信するように実装した
URLConnection のサブクラスを返せば良いのでしょうか
499:デフォルトの名無しさん
08/02/28 20:51:52
そうです
500:494
08/03/03 11:52:47
遅くなりましたが>>495-499ありがとうございました。
がんばってみようと思います。
501:そのとおり
08/09/05 13:19:52
そのとおり
502:デフォルトの名無しさん
08/09/15 14:09:16
URL url = somthing;
conn = url.openConnection();
とかある場合, conn.getInputStream() の戻りで返ってくる
メソッドの振る舞いをカスタマイズしたいんですけど
何か方法ないですか?
503:デフォルトの名無しさん
08/09/21 13:48:51
> conn.getInputStream() の戻りで返ってくる
> メソッドの振る舞いをカスタマイズしたいんですけど
メソッドはメソッドを返せない。
getInputStream()で返ってくるInputStreamオブジェクトの振る舞いを変えたいって意味?
どういうカスタマイズをしたいかによるけれど、
getInputStream()が返すInputStreamのメソッドの動作を変えたいのなら、
必要なメソッドをオーバーライドしたFilterInputStreamクラスのサブクラスを作成して、
InputStreamオブジェクトをそのクラスでラップしてやるのがお手軽かも。
504:デフォルトの名無しさん
08/10/22 14:13:51
今イーサリアルのようなすべてのポートとそこを通るパケットを監視できるようなシステムを作りたいのだけど、
どうしたらイーサリアルみたいなことできるの?あれやり方ぜんぜんわからないんだけど
windowsファイアーウォールが関係してる?
505:デフォルトの名無しさん
08/10/22 14:43:26
Java だけじゃ無理だろ?
JNI 使ってドライバ直接叩く気力があれば別だが...
Unix 系だと BPF とかだけど, TCP/IP スタックとは
全く別のドライバ実装になってるもん
Windows でも事情は似たようなもんだと思うぞ
506:デフォルトの名無しさん
08/10/22 15:08:31
>>505
それは504への・・・でいいのかな?
そうだとしてれす
やっぱ無理なのか・・・ドライバを監視してるイメージなのかな。あれは。
そっかー。
じゃああるポートをあるポートに結びつけるだけのプロキシをつくりたいの
だけど、あ、これならいけそうだ。
でもさ、いちいちプロ棋士のポートをアプリとルータ側で指定しなくちゃならなくなるよね。
何かできない?
ルータ5900ポート → 5900プロ棋士5900 → アプリ5900ポート
こんな風にはできないよね?
プロ棋士でパケットを監視するの。プロ棋士実行してないときは
ルータからアプリに直接いくの。
507:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/23 12:29:47
ヨドバシ.com(URLリンク(www.yodobashi.com)<)l50
509:デフォルトの名無しさん
08/10/23 12:31:42
プログラミングに関する質問にしてください
510:デフォルトの名無しさん
08/10/23 21:38:12
>>504
ほいなー。
URLリンク(netresearch.ics.uci.edu)
511:デフォルトの名無しさん
08/10/28 16:44:13
Struts と Hibernate が原因で重くなってるって?
512:ともふみ
08/11/03 11:14:08
こんにちは、知史といいます。
あなたの書き込みしたものを拝見させていただきました。
私はハッキングのことについて4か月前からいろいろと考え始めました。
すると、この書き込みを来て是非ハッキングについて詳しく教えていただきたいなと
思いメールをさせていただきました。
よろしければご返事をいただきたいのですが、よろしくお願いします。
小村 知史(コムラ トモフミ)
513:デフォルトの名無しさん
08/12/16 07:51:13
>>401-512
オヤスミ…
<⌒/ヽ-、___
/<_/____/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄
514:デフォルトの名無しさん
09/03/07 17:31:12
URLリンク(www.cosmicbreak.jp)
このネトゲはクライアントがjavaとOpenGL、データベースがpostgleSQLで動いてるらしい。
javaって意外と速く動くんだね
515:デフォルトの名無しさん
09/03/24 17:42:22
スルー推奨
516:デフォルトの名無しさん
09/03/24 21:11:43
おまえを
517:デフォルトの名無しさん
09/03/31 07:17:31
ネットワーク処理はMMOまで行くとByteBufferだけで処理してそうだな。
ThreadLocalレベルのシングルトンでByteBufferをラップした擬似パケットクラスを作ってそう。
518:デフォルトの名無しさん
09/04/20 00:50:27
こやつめw
519:デフォルトの名無しさん
09/05/18 15:29:01
>>513
Z
z
z
<⌒/ヽ-、___
/<_/____/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄
520:デフォルトの名無しさん
09/05/23 00:11:15
改行は¥r¥nってRFCだっけか。
printlnで済まないのがもどかしい。
521:デフォルトの名無しさん
09/05/23 06:36:39
>printlnで済まないのがもどかしい。
httpヘッダなんかを手で書いてるの?
やめといたほうが・・・
全然関係名いけどrfcテキスト自体の改行コードも\r\nなんだな
URLリンク(www.ietf.org)
522:デフォルトの名無しさん
09/06/18 21:22:06
>>521
∧,,∧ ∧,,∧
∧,,(´-ω-)(-ω-`)∧,,∧
( ´-ω)旦o) (o旦o(ω-` )
(_ o[( ´-) (-` )]o _)
└'ー-(_ )][( _)ー'┘
'ー'^ー' 'ー'^ー'
523:デフォルトの名無しさん
09/07/20 19:18:23
ついにできたお♪
524:デフォルトの名無しさん
09/07/22 14:58:38
何が出来たの?
525:デフォルトの名無しさん
09/12/23 05:43:25
同じく
526:デフォルトの名無しさん
10/01/24 05:54:43
swing操作やキーボード操作で表示を変えてる間も、ちゃんとネットワーク処理させたいけど、両方timerでスレッドプログラミングして非同期で動く様にしとけばおk?
527:デフォルトの名無しさん
10/01/26 15:40:42
>>526
なんか微笑ましい文章だな。無理やり知ってる単語繋がなくていいよ。
NW処理をGUIのスレッド(Swing/AWTのEDT)でやらなければ、GUIがブロックされることはない。
NWはSocket系使うか、NIO使うかで変わる。前者なら1つのSocketに対して1つのスレッドを作って、
スレッド内では同期処理。受信/送信でUIへのフィードバックが発生したら、EventQueue#invokeLater
でUI更新。
後者なら、基本的にはひとつのスレッドでSelector#selectして、シングルスレッドで非同期処理。
UIへのフィードバックは同様にEventQueue#invokeLater。
最大のスケーラビリティ/パフォーマンスを求めるなら、Selector#selectで、selectされたSocketChannelを
スレッドプールで処理。
528:デフォルトの名無しさん
10/01/26 21:05:19
Windows上のJRubyでUDPv6のbindが出来ない問題に当たりました。
この状況に対応すると思われるJavaコードはリンク先の通りなのですが、
同様にWindows上ではエラーが生じる環境ばかりであるのか、
または逆にエラーが生じず正常動作するWindowsの環境があるのか。
自分の環境ではどのような結果になったのかを教えて頂けると幸いです。
URLリンク(pastebin.ca)
529:528
10/01/27 05:35:26
自己レスです。
JDK 7 b36にて上記の問題は解決されたようです。
ただし、これはVista以降のみに対応する修正であり
Windows XPでは問題が残ったままとなっています(JDK 7 b80にて確認)。
URLリンク(bugs.sun.com)
530:デフォルトの名無しさん
10/02/13 16:00:28
初心者ですが失礼します
お絵かきチャット作っているんですが
クライアントからキャンパスに描画した座標データをすべて
ArrayListに入れて
ArrayList自体を送受信しようとしているのですが・・・・・
受信
BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
ObjectInputStream reader = new ObjectInputStream(bis);*1
送信
BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
ObjectOutputStream reader = new ObjectOutputStream(bos);
この書き方じゃだめですか?
*1で処理がとまります。
お願いします
531:デフォルトの名無しさん
10/02/13 16:41:16
送信側flushしないとバッファにたまったまま送信されないからじゃない?
532:デフォルトの名無しさん
10/02/14 21:54:24
>>531
どうも動きましたww
しかしエラーが・・・・・
java.io.StreamCorruptedExceptionってエラー
ググッたらスレッドがどうちゃらこうちゃら
どうすればいいんだ?orz
533:ああああ
10/02/15 22:03:50
530です
あのですね
ArrayListをサーバ側と送受信したいんですが、
どうやればいいんでしょうか?
ObjectOutputStreamとか使っていいのでしょうか?
これの引数がFileOutputStreamになっていたのですが・・・
大丈夫なのでしょうか?
534:デフォルトの名無しさん
10/02/16 11:52:54
サーバ
URLリンク(codepad.org)
クライアント
URLリンク(codepad.org)
535:デフォルトの名無しさん
10/02/16 12:08:55
もしかしてObjectOutputStreamを毎回作り直していないでしょうか
ObjectOutputStreamを作り直すなら対応するObjectInputStreamも作り直さないといけない
ずっと同じObjectOutput/InputStreamを使い続けるか、毎回Output/Input両方とも作り直すか
どっちでもいいけどどっちかに決めてください
片方だけ作り直すのはNG
もし同じObjectOutputStreamを使い続けるならときどきflushに加えてresetも入れてください
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4983日前に更新/153 KB
担当:undef