- 1 名前:じぇいそん [04/06/03 14:00]
- ネットワークプログラミング相談室ではいろいろな言語の質問が混ざっているようなの
で、 Java 用にスレを立ててみることにしました。 Java によるTCP/IPソケットプログラミング、 ネットワークサーバーの構築、RMI 、JINI 、 分散コンピューティングなどについての技や プログラミングついてみんなで話し合いましょう!! 関連スレ: ネットワークプログラミング相談室 Port9 pc5.2ch.net/test/read.cgi/tech/1080658835/
- 246 名前:デフォルトの名無しさん [2006/03/25(土) 18:04:07 ]
- 基本的な質問ですが、
あるノードからあるノードにデータが動くためには、 必ずsokcetクラスを使う必要があるのでしょうか?
- 247 名前:デフォルトの名無しさん mailto:sage [2006/03/26(日) 10:35:24 ]
- >>41
Stringはサブクラスを作れないはずだが
- 248 名前:デフォルトの名無しさん mailto:sage [2006/03/27(月) 17:19:38 ]
- dhcpはつまんねーな。
IM-IRCブリッジとかどう? メモリリークしまくりで楽しそうだよ(w
- 249 名前:デフォルトの名無しさん [2006/03/27(月) 17:47:32 ]
- >>246
ソケットがないと通信できないんだから当たり前
- 250 名前:デフォルトの名無しさん mailto:sage [2006/03/27(月) 19:54:08 ]
- NFSとか、1台のSCSI HDDを共有してるとかはないですか、そうですか。
- 251 名前:デフォルトの名無しさん mailto:sage [2006/04/10(月) 17:43:05 ]
- 誰かcyberlink for java使って
UPnP対応ルータのポートを開けて AddMappingするだけの簡単な プログラムを組んでくれませんかねぇ。
- 252 名前:デフォルトの名無しさん mailto:sage [2006/04/11(火) 11:04:58 ]
- ヒント:宿題スレ
- 253 名前:デフォルトの名無しさん mailto:sage [2006/05/24(水) 04:41:17 ]
- UDPを使ったネットワークプログラミングについて質問です。
UDPを使ってクライアント/サーバーを作り、複数のクライアントとやり取りできるようにサーバーにThreadを継承させました。 2人以降のクライアントがパケットを送ってきたらその度新しくスレッドを作ろうと考えているんですが、どうやってパケットが届いたときに新しくスレッドを作るんでしょうか? どうしても2人目が送ったパケットがそのままオリジナルのサーバースレッドに受信されてしまいエラーが出るのですが・・。
- 254 名前:253 mailto:sage [2006/05/24(水) 04:59:56 ]
- 少し説明不足でした。
サーバークラスの中にコンストラクタ、run()、main()と作り、main()に今のところ、 int well_known_port = SERVERPORT; // デフォルトポートナンバー try { testServer server = new testServer(well_known_port); server.start(); } catch(IOException e) { System.err.println(e); } としてあります。 run()の中でパケットを作ったり受信したりするプロセスを全て入れてあります。 上のままではスレッドが1つしか作れてないので、クライアントが増えるたびに新しいスレッドを作りたいと思っています。 ヒントでもいいので教えていただければ嬉しいです。
- 255 名前:253 mailto:sage [2006/05/24(水) 22:33:12 ]
- 解決しましたm(_ _)m
- 256 名前:デフォルトの名無しさん [2006/05/30(火) 04:37:12 ]
- 帯域制御機能をもったjavaのプロキシソフトサーバーソフトってありますか?
- 257 名前:デフォルトの名無しさん mailto:sage [2006/05/30(火) 08:27:40 ]
- そもそもjavaだと遅いから全てが帯域制限されて意味が無い。
delegateとかsquidをjavaに移植してくれ。 それって全く関係無い香具師がudp送って来ても鯖プロセスが増えて。。。 udpパケットの送信元偽造されて送られてくることが無い様に祈れ。
- 258 名前:デフォルトの名無しさん [2006/05/30(火) 11:18:50 ]
- javaで書かれた普通のプロクシサーバーソフトを、sleepとか使ってちょいといじれば良いだけ。
javaとネットワークプログラミングを勉強してから一月くらいでそのくらいのことはできる。
- 259 名前:デフォルトの名無しさん [2006/06/10(土) 05:43:53 ]
- すいません。
String ip="192.168.0.2"; int port=5555; Socket socket = new Socket(ip,port); 以上のような接続方法はただしいでしょうか? ホスト名ではなくIPアドレスで指定したいのですが、 どのようにすればよいかご教授ください。 よろしくお願いします。
- 260 名前:デフォルトの名無しさん [2006/06/10(土) 17:44:38 ]
- ブラウザを作っているのですが、
POSTでエンティティボディのデータを送るときの 文字コードって決まっているのでしょうか? たとえば、サーバーがIIS+JSPコンテナで、 クライアントで入力したものをサーバーに送る場合、 どの文字コードでサーバーに送ればいいのでしょうか? HTMLに指定されている文字コード?
- 261 名前:デフォルトの名無しさん mailto:sage [2006/06/10(土) 21:42:37 ]
- >>259
ただしい。 ただし、IPv6対応に問題が出る(Windows Vista以後はIPv6フル対応)が、 アンタの責任だから、まあ知ったこっちゃねえし。
- 262 名前:デフォルトの名無しさん mailto:sage [2006/06/11(日) 10:12:57 ]
- こんなんあった
jump.sagasu.in/goto/butikire-movie/
- 263 名前:デフォルトの名無しさん mailto:sage [2006/06/13(火) 11:05:27 ]
- socketを使って、Streaming通信中、 Broken pipe
がおこってしまう場合があります 連続的なデータを送っているのですが クライアントが切断処理をしていないのに Broken pipe が怒ってしまうのですが、送っちゃいけないデータなどは送っていません なんらかの心当たりがある人いらっしゃいますでしょうか?
- 264 名前:デフォルトの名無しさん [2006/06/16(金) 01:42:38 ]
- >>251
www.cybergarage.org/blog/archive/2006_04_01_skonnoblog.html#114503507548323193
- 265 名前:デフォルトの名無しさん mailto:sage [2006/06/16(金) 03:40:37 ]
- 間のファイヤーウォールやNATに切られてもリトライするような処理ぐらい入れろ。
POSTするときの仕様ぐらい、HTTPの仕様を読もうぜ。 つーか仕様も作らないで行き当たりばったりで変な実装するな。
- 266 名前:デフォルトの名無しさん [2006/06/17(土) 12:36:13 ]
- Javaでtracerout出来るようになったの?
- 267 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 11:46:43 ]
- >>266
raw socket位投げられるだろう。
- 268 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 17:08:41 ]
- へ?どうやって?
- 269 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 17:36:15 ]
- >>268
うぜぇしね
- 270 名前:デフォルトの名無しさん mailto:sage [2006/06/19(月) 11:30:13 ]
- Process p = Runtime.getRuntime().exec(new String[] {"traceroute", host});
- 271 名前:デフォルトの名無しさん mailto:sage [2006/06/21(水) 22:23:04 ]
- 【教えて!】
が良い味出してる
- 272 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 00:11:30 ]
- サーバー側でインプットストリームを常に監視して、
ストリームにデータが入ったらある処理をはじめるようにしたいのですが、 うまいやり方ありますか? 今はサーバー側のスレッドでしたのようにまってます。 while(in.available < 1) { Thread.sleep(10); } 〜ある処理〜
- 273 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 01:54:51 ]
- new I/O
- 274 名前:デフォルトの名無しさん mailto:sage [2006/07/01(土) 18:10:04 ]
- >>272
BlockingI/O(通常の)で、インプットストリーム1つに対してスレッドを 1つ貼り付ける。 あるいは1つのスレッドで複数のインプットストリームを処理するなら、 >>237 の言うとおり、new I/Oを使う。
- 275 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 12:14:40 ]
- >>237 ではなく
>>273 です
- 276 名前:デフォルトの名無しさん [2006/07/04(火) 21:05:22 ]
- 時給1000円でJava教えてくださるかたを募集します
場所 所沢(池袋・高田馬場から直通) i−want−to−study−java@hotmail.co.jp (アドレスは全角で書いてあるので半角に直してください) よろしくおねがいします
- 277 名前:デフォルトの名無しさん mailto:sage [2006/07/05(水) 21:22:28 ]
- 初心者なんですがこれから、ネットワーク勉強したい思ってます。
ftpクライアント、httpクライアント、echoサーバなどのperl,cの 資料はネットに豊富にあったので、大体わかってきました。 ただ、根本的な仕組みがわかってないので、これから どうしようか考えてます。 まずは、peer to peerで、チャットやファイル交換がしたいと思います。 パソコン一台の環境なんですが勉強できますか? パソコン一台で、2台に見せかけて通信 とかできるのかと思いまして。 パソコン2台ないとだめなんでしょうか。 本とかサイト紹介していただけるとがんばっていけそうです。 よろしくお願いします。 スレ違いでしたら、どこか飛ばしてくださいませ。
- 278 名前:デフォルトの名無しさん mailto:sage [2006/07/05(水) 23:38:11 ]
- >>277
localhostに対してコネクション張りゃいいですよ。
- 279 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 01:36:14 ]
- >>278
知識不足で、具体的な方法がまだわからないですが、 できるということがわかればあとは、本などで調べたいと思います。 ありがとうございました。
- 280 名前:276 [2006/07/17(月) 21:29:54 ]
- 教える対象は超初心者です。
専門学校などでJavaを勉強されていて夏休みだけ教えたいという方も歓迎です
- 281 名前:デフォルトの名無しさん [2006/07/21(金) 21:55:33 ]
- 大阪から行きます。帝国ホテルスイーツを取ってくださるなら考える余地ありです
- 282 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 22:22:09 ]
- 仕様:
クライアントはテレビの録画予約をするGUIアプリケーション。 クライアントから番組のチャンネル、放送開始時刻、終了時刻を送信。 サーバは予約情報をDBにストック。 サーバはDBを監視していて、予約開始時刻になったら録画APIを起動させる。 クライアントは現在の予約情報などをサーバに問い合わせて表示もできる。 さて、サーバ側はどんな実装にする? クライアント・サーバ間の通信はソケット?それともHttp?できれFirewall越えしやすい方がいい。
- 283 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 22:43:51 ]
- >>282 がクライアントもサーバも書くの?
- 284 名前:282 mailto:sage [2006/07/21(金) 22:47:16 ]
- >>283
サーバだけでいいです。
- 285 名前:デフォルトの名無しさん mailto:sage [2006/07/22(土) 10:44:52 ]
- >>282
ICMP
- 286 名前:デフォルトの名無しさん mailto:sage [2006/07/22(土) 11:32:23 ]
- >>282
MythTVのJava版クライアント作れよ。 www.mythtv.org/
- 287 名前:デフォルトの名無しさん [2006/07/23(日) 22:16:18 ]
- >>286
つまりクライアントとのセッションを管理するフロントエンドシステムと 時刻を監視してイベントを処理するバックグランドシステムの 2アプリケーション/サーバの組み合わせにするってことですね。 2つのアプリケーション間は特に通信はいらないかな。あえていうならDB経由で情報をやりとりするということか。。。
- 288 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 22:17:40 ]
- >あえていうならDB経由で情報をやりとりするということか。。。
泣きたくなるくらい広いスコープのグローバル変数が誕生するわけですね。
- 289 名前:デフォルトの名無しさん [2006/07/23(日) 22:37:37 ]
- >>288
もっといいやり方があるというのなら対案をだせよ。 民主党のダメ政治家かおまえは。
- 290 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 22:38:44 ]
- >>289
めんどいなぁ、んじゃSOAP。Axisでも使ってさ。 ほれ、コレで満足か?
- 291 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 22:47:12 ]
- 何を揉めてるのか知らんがSOAPで組めばええやん
Firewall越えを要件に入れてるなら
- 292 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 00:25:01 ]
- >>291
AJAXでもいいじゃん。
- 293 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 00:31:09 ]
- プログラマの俺様ツールにブラウザアプリを採用するのか?w
- 294 名前:デフォルトの名無しさん [2006/07/24(月) 00:33:14 ]
- >>290-292
もめてるのはフロントエンド⇔バックエンド間をデータベースを経由して情報をやり取りする部分。 ここはFirewallをこえる必要ないからhttpとは関係なくなる。 (クライアント⇔フロントエンドはAJAXでもFirewall越えるからOKなのはたしか。でも問題はここじゃない。)
- 295 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 00:38:03 ]
- >>294
なんなの?ageは俺らをバカにしようとかそう言う意味ですか?
- 296 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 01:06:34 ]
- >>294
Ajaxでいいなら「フロントエンド⇔バックエンド間」なんてものは存在せんだろ
- 297 名前:sage [2006/07/24(月) 01:07:25 ]
- Httpがいいんじゃない?実装が楽だから。
- 298 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 01:38:05 ]
- >>296
MythTVやPostgreSQLのようなアーキテクチャも勉強した方がいい。 Ajaxを取り入れるととうやればMythTVのfrontend-backgroundのあいだのやりとりを存在なくせるのか説明してくれ。
- 299 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 01:43:05 ]
- Tomcatひとつで出来るだろ
- 300 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 01:45:56 ]
- >>299
予約の録画開始はどうする?
- 301 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 01:49:03 ]
- どうもせんよ、監視してAPI呼び出すだけだろ
web.xmlに監視クラス書いておしまい
- 302 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 10:42:58 ]
- まあ思いつかないぐらいなら実装は絶望的です。外注に出したら?
- 303 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 11:02:45 ]
- >>298
なんでMythTVにこだわるん?
- 304 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 22:03:42 ]
- MythTVは二回しか出てきてないじゃん。
- 305 名前:デフォルトの名無しさん [2006/08/31(木) 13:24:54 ]
- javaでFTPクライアントソフトを作成したんですが、
認証まではうまくいくんですがPASVモードでの dataSocket = new Socket(serverIP.replace(',','.'),serverPort); でタイムアウトが発生し接続できません。 windowsでは問題なく実行できます。 環境は +−−−−−−+ +−−−−−−+ LINUX−−−−| | | | | ルータ- |−−−−−| モデム |−−−−−インターネット WIN−−−−−−| | | | +−−−−−−+ +−−−−−−+ ちなみにlinuxのFTPコマンドではファイル転送も問題なくできます。 原因がさっぱりわかりません。
- 306 名前:デフォルトの名無しさん mailto:sage [2006/08/31(木) 14:03:18 ]
- PASVなのに20番を使うからです
- 307 名前:デフォルトの名無しさん [2006/08/31(木) 15:18:25 ]
- >306
ポートは20でなく動的に接続しています。 305にも書いたけどwindowsではFTPに接続、転送できています。
- 308 名前:デフォルトの名無しさん mailto:sage [2006/09/01(金) 00:18:24 ]
- FTPの勉強からやり直したほうがいいよ。
FTPプロトコル手順を理解出来てない。
- 309 名前:デフォルトの名無しさん mailto:sage [2006/09/01(金) 13:25:12 ]
- >>305 の、1行のコード
dataSocket = new Socket(serverIP.replace(',','.'),serverPort); だけでわかるわけないだろ。 PORTのバイトオーダー絡みじゃないかとエスパーレス。
- 310 名前:デフォルトの名無しさん mailto:sage [2006/09/02(土) 10:16:54 ]
- >>308
またお前か・・・。お前こそいい加減RFC読んでくれ。
- 311 名前:デフォルトの名無しさん mailto:sage [2006/09/05(火) 15:57:32 ]
- 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); url がwww.yahoo.co.jp/ のとき全部取り出せないで途中で切れて終わってしまいます。 Reader を使うと上手くできるので、解決策よりも どうして途中で尻切れなのかなのか教えてください。
- 312 名前:デフォルトの名無しさん mailto:sage [2006/09/05(火) 22:15:27 ]
- >>311
適当なとこまで読んだところで、readが制御返すから。 TCPの1セグメントか、タイムアウトか、バッファ最大のどれかだろ。 InputStream#readのJavaDocを熟読せよ。
- 313 名前:デフォルトの名無しさん mailto:sage [2006/09/05(火) 22:25:29 ]
- >>312
さっそく、ありがとうございます。 タイムアウトかなと思ってたんですが、 これってライブラリーのバグの範疇だと思うのですけど… Readerでは尻切れしないので。
- 314 名前:デフォルトの名無しさん mailto:sage [2006/09/05(火) 23:22:08 ]
- >>313
Readerって思いっきりバッファリングするやん。 readで要求サイズすべてがいっぺんに取得できると考える方が間違い。
- 315 名前:デフォルトの名無しさん mailto:sage [2006/09/06(水) 00:06:38 ]
- 最近ではFTPのかわりにHTTPで100MBのファイルをダウンロードとか良くあるけど、このときってどうするの?
URLConectじゃなくてSocketつかえって?
- 316 名前:デフォルトの名無しさん [2006/09/06(水) 04:03:21 ]
- Reader input=new InputStreamReader(con.getInputStream());
とやると、全部読み込めるようなので、>>314の指摘のバッファリングとかこれと何らかの関係あるのでしょうか? java.io.InputStream か java.io.Reader かで挙動が違うのはなぜかというのだと思うのですが・・・・
- 317 名前:デフォルトの名無しさん mailto:sage [2006/09/06(水) 15:07:37 ]
- >>316
InputStreamReaderがバッファリングするかどうかは知らんが、 InputStream#readの戻り値は、JavaDocの通り、 1以上: 読んだバイト数 0: 与えた読み込み先のbyte[]の空きが0 -1: ストリームの終わり だ。-1かIOExceptionまで読み続ければ良い。 >java.io.InputStream か java.io.Reader かで挙動が違う そもそも、*InputStreamはbyteを読むもので、*Readerはcharを読むものなんだが、この違いは理解してるのか?問題にならんのか?
- 318 名前:デフォルトの名無しさん [2006/09/06(水) 16:30:39 ]
- >>317
横から失礼しますが、どうもあなたが指摘しているところはズレているようで、少し傍観してみてはいかがですか? > だ。-1かIOExceptionまで読み続ければ良い。 それで、なにが原因なんでしょか?何を指摘したいのか、さっぱり分かりません。 > そもそも、*InputStreamはbyteを読むもので、*Readerはcharを読むものなんだが どうも偉そうに聞こえるますが、その違いで何か関係があるなら、そのあたりを指摘すれば良いでしょう。 ところで、byteかcharかの違いで何か問題があるんでしょうか?
- 319 名前:デフォルトの名無しさん mailto:sage [2006/09/06(水) 17:37:11 ]
- (´Д`;) …
- 320 名前:デフォルトの名無しさん mailto:sage [2006/09/06(水) 17:44:04 ]
- >>318
ハゲワラ
- 321 名前:デフォルトの名無しさん mailto:sage [2006/09/06(水) 17:47:17 ]
- >>319-320
じゃ、仕事も終わりだし、そろそろ風俗に行こうや!
- 322 名前:デフォルトの名無しさん mailto:sage [2006/09/06(水) 20:19:58 ]
- お、イイッすねえ。
聖コスプレ学園なんてどうっすか?
- 323 名前:デフォルトの名無しさん mailto:sage [2006/09/06(水) 23:27:23 ]
- おまいらセフレか彼女ぐらい作れよ。
Javaなんか弄ってても子孫は残せないぞ。
- 324 名前:デフォルトの名無しさん mailto:sage [2006/09/06(水) 23:33:24 ]
-
エロゲーほしい 誰か作ってー
- 325 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 07:10:56 ]
- >>317
APIを写したのはわかったけど、それで君は何を言いたいわけ?
- 326 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 07:25:47 ]
- >>325
プゲラ
- 327 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 07:51:22 ]
- >>312
>適当なとこまで読んだところで、readが制御返すから。 これには何か根拠でもあるの?
- 328 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 07:52:27 ]
- >>314
>Readerって思いっきりバッファリングするやん。 これには何か根拠があるの?
- 329 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 13:32:07 ]
- >>318
>それで、なにが原因なんでしょか?何を指摘したいのか、さっぱり分かりません。 何の原因を聞いているのか知らんが、 >>311 >url がwww.yahoo.co.jp/ >のとき全部取り出せないで途中で切れて終わってしまいます。 の原因だとしたら、 >byte[] buffer=new byte[1000*1000]; >int size=input.read(buffer); が、「1000*1000バイトか、ストリームの終わりまで読みこむ」という意味の命令ではないこと。 実際に何バイト読み込むかは実装・クラス・状況次第。 だから、readの返り値を見て、ストリームの終わりに達するか、例外が発生するまで 読み込め、と言ってるんだが。 >どうも偉そうに聞こえるますが、その違いで何か関係があるなら、そのあたりを指摘すれば良いでしょう。 尻切れになる/ならないは別にして、application/octet-stream なストリームを、 InputStreamReaderで読んだら、取り返しがつかんだろ。byte[]とchar[]は可逆変換ではない。 >ところで、byteかcharかの違いで何か問題があるんでしょうか? データ型としてのbyteとcharなら単に1バイトか2バイト幅かだけの違いだが、 Readerがcharで返すということは、Readerへの入力のbyteシーケンスを 指定されたencodingに従ってunicode (ucs2)に変換してるわけだ。 得られたchar[]なりStringを同じencodingでbyte[]に変換しても、 元のバイト列になる保証は無い。
- 330 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 18:18:39 ]
- >>329
>尻切れになる/ならないは別にして 勝手にそらしているようですけど、 ここでは尻切れが問題なんですけど? >application/octet-stream なストリームを、 InputStreamReaderで読んだら、取り返しがつかんだろ。 もしかして、ここで指摘している事は、 new InputStreamReader(input, encoding) であれば五体満足ということなんのしょうか? 文字コードは話題ではないですけど・・ >byte[]とchar[]は可逆変換ではない。 可逆変換でないから、だから、尻切れとどう関係があるんですか? >>ところで、byteかcharかの違いで何か問題があるんでしょうか? >データ型としてのbyteとcharなら単に1バイトか2バイト幅かだけの違いだが、 >元のバイト列になる保証は無い。 それが尻切れ(転送中断や想定外)と何か関係があるのか聞いているのですけど? 文字化けとか問題にしてないのですけど、 また勝手に解釈して関係ない知識自慢は見苦しい…
- 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[])ではなぜ尻切れなのかなんだけど? そーゆー仕様だから。以上。 で良いんじゃないかと思ってみたりする。
|

|