Java ネットワークプログラミング 【教えて!】at TECH
Java ネットワークプログラミング 【教えて!】 - 暇つぶし2ch1:じぇいそん
04/06/03 14:00
ネットワークプログラミング相談室ではいろいろな言語の質問が混ざっているようなの
で、 Java 用にスレを立ててみることにしました。


Java によるTCP/IPソケットプログラミング、
ネットワークサーバーの構築、RMI 、JINI 、
分散コンピューティングなどについての技や
プログラミングついてみんなで話し合いましょう!!

関連スレ:
ネットワークプログラミング相談室 Port9 スレリンク(tech板)


2:デフォルトの名無しさん
04/06/03 14:03
2げと

3:デフォルトの名無しさん
04/06/03 14:20
アプレット+CGI とか
jsp+SQL とか
ネットワーク部分はほとんどどうでもいいような質問だらけになると思う

4:デフォルトの名無しさん
04/06/03 14:54
ネットワークプログラミングはネットワークが分っているのかどうかが一番大事。
言語はあまり関係ない。

5:デフォルトの名無しさん
04/06/03 14:58
>>4
いや、RMIとかは他の言語にはない特殊なテクノロジーだろ。
他にもJavaにはたくさんのおもしろいコンポネントがあると思う。
ただ、それらについての日本語ドキュメントが少ないだけ


6:デフォルトの名無しさん
04/06/03 15:05
>5
serializeとdeserializeが出来れば別にJava出なくとも実現可能な技術だと思うが


7:デフォルトの名無しさん
04/06/03 15:08
>>6
それができないから特殊なんだろ? JavaはOOなんだから。

8:デフォルトの名無しさん
04/06/03 15:11
1がドキュンだということだけはよく分ったよ

9:デフォルトの名無しさん
04/06/03 15:22
日本語ドキュメントが少ないからどうしたってんだ

10:デフォルトの名無しさん
04/06/03 15:48
CORBA, IIOPはどうするんだ?

Servletの話ばかりになったりしないか?

11:デフォルトの名無しさん
04/06/03 15:53
Servletは板違い。

12:デフォルトの名無しさん
04/06/03 16:02
>>8はドキュソ

13:デフォルトの名無しさん
04/06/03 16:06
マターリいこうよ(´ー`)

14:にやこう ◆Es3JBt9s5c
04/06/03 16:08
            o
            /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ /
           /  このスレは無事に    /
           / (・∀・)ニヤニヤしますた   /
          /                 /
          /   にやこうより      /
         /                 /
         / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/
 ∧_∧  /                /∧_∧
 ( ・∀・) /                / (・∀・ )
 (    )つ                ⊂(    )
 (__)_)                   .(_(__)

15:デフォルトの名無しさん
04/06/03 16:19
スレリンク(tech板)
こちらへどうぞ。

16:デフォルトの名無しさん
04/06/03 16:23
削除依頼完了

17:にやこう ◆Es3JBt9s5c
04/06/03 16:38
>>16
(・∀・)ニヤニヤ

18:あいタン ◆3QC.t4i5w6
04/06/03 17:21

( ノ ̄∇ ̄)ノ みんなーーーーーーー、あいでーーす!!( ̄ー ̄)ニヤリッ

邪魔してごめんなサーイ。。・゚・(ノД`)・゚・。ウエエェェン


19:デフォルトの名無しさん
04/06/03 20:36
何故誰も>>7がDQNだと指摘しないんだ・・・?

20:あいタン ◆3QC.t4i5w6
04/06/03 20:42
あいはもう寝むるるる~~~(´ー`)
みんなヾ( ̄◇ ̄)ノ))おやすみーヾ( ̄◇ ̄)ノ))おやすみー。

(´ー`) o O ( 夜更ししすぎは体にわるいポ )


21:デフォルトの名無しさん
04/06/03 22:57
1が質問をする前に、このスレは崩壊してしまいました。

誘導成功( ̄ー ̄)ニヤリ

22:デフォルトの名無しさん
04/06/04 00:45
その昔、JAVAでネトしゅーてぃんぐ対戦ゲーを作ったが
そのときのコードでいいなら晒してやるぞ
あの時は果てしなく無知だったから
56kモデムでもLAN並のスピードがでると確信してまつた
出来上がったのはモデム同士では1秒で1フレーム動くか動かないかの代物ですたよ ええ。

さげとくね

23:デフォルトの名無しさん
04/06/04 01:13
おー、晒してクレー

24:デフォルトの名無しさん
04/06/04 14:21
晒そうか・・・

25:デフォルトの名無しさん
04/06/07 15:20
激しくキボンヌ!

26:デフォルトの名無しさん
04/06/13 01:21
あげ

27:デフォルトの名無しさん
04/06/24 20:40
おい、javaたん。

28:javaたん
04/06/24 21:01
はいっ☆

29:デフォルトの名無しさん
04/06/29 21:43
インターネットエクスプローラーの、
HTTPリクエストヘッダのUser-Agentの文字列(製品トークン)を
誰か教えてくださいませ。


30:デフォルトの名無しさん
04/06/29 21:49
>>29
なんでこのスレで・・・

31:デフォルトの名無しさん
04/06/29 21:58
クラスタ化の手順を教えて。

32:デフォルトの名無しさん
04/06/30 22:45
まず、サーバを2台買います。

33:デフォルトの名無しさん
04/07/01 05:36
>>32
借りてきちゃだめですか?

34:デフォルトの名無しさん
04/07/03 10:21
良い質問です。
借りてきてもいいですが、片っ方だけ先に返さなければならないなんてことにならないように十分注意する必要があります。

35:デフォルトの名無しさん
04/07/03 20:07
ぱくっちゃだめですか?

36:デフォルトの名無しさん
04/07/05 18:52
AirProxy
URLリンク(webclub.kcom.ne.jp)

すごいです。

37:デフォルトの名無しさん
04/09/19 18:06:13
Javaでステルススキャンするにはどうやったらよいのでしょうか?

38:デフォルトの名無しさん
04/09/21 00:58:25
>>37
無理。通信はアプリケーション層しか対応していなかったと思う。


39:デフォルトの名無しさん
04/09/23 19:42:13
最後のwhile文の中のclone()のところでどうしてもエラーが出てしまいます.
「protectedされています」というエラーが出てしまいます.
色々試したのですがどうしても出来ません.
よかったらご指摘下さい.
class IO_change {

static boolean b = true;

static void copy_and_buff(InputStream in, OutputStream out1, OutputStream out2) throws IOException {

InputStreamReader isr = new InputStreamReader(in);
BufferedReader br = new BufferedReader(isr);
String line;

FileWriter fw = new FileWriter("buff.txt");

OutputStreamWriter osw = new OutputStreamWriter(out1);

String cpline;

jusin j = new jusin();
Thread thread1 = new Thread(j);
thread1.start();


40:デフォルトの名無しさん
04/09/23 19:42:34

while((line = br.readLine()) != null) {
cpline = (String)line.clone();
fw.write(cpline, 0, cpline.length());
osw.write(line, 0, line.length());
if(b!=false) buff_out.rfile(out2);
}
osw.flush();
}



41:デフォルトの名無しさん
04/09/23 23:49:09
clon()はprotectedのメソッドなんだから上記の例ならStringのサブクラス
内からしか使えない。よってそのエラーが出るのは当然。
コピーしたいならnew String( line)だろ。でもよっく考えてみるべき。
ほんとにコピーする必要があるのか?

42:デフォルトの名無しさん
04/10/07 20:50:14
ADSLを使ってる場合、
ルータ : 192.168.0.1
PC   : 192.168.0.2
のようになります。
しかし、外から見たプロバイダに割り当てられたグローバルアドレスは
YahooBB2200460002**.bbtec.net(220.46.0.2**)
のようになります。

で、InetAddressを使ってPCやルータのアドレスを取得しようとすると、やはり192.168.0.xとなってしまいます。
プロバイダから割り当てられたグローバルアドレスを取得するにはどうしたらいいのでしょうか?
ご教授お願いしますm(_ _)m


43:デフォルトの名無しさん
04/10/07 22:24:01
>>42
このスレッドは過疎スレなので、回答者が現れる可能性が低いです。
下の本スレの方で質問した方がいいでしょう。

【初心者】Java質問・相談スレッド54【大歓迎】
スレリンク(tech板)l50


44:デフォルトの名無しさん
04/10/07 22:46:47
>>43
そっちに行ったら板違いじゃないか?、とか言われたもので・・・orz
もう一度そっちに行ってみます。

45:デフォルトの名無しさん
04/10/08 00:27:07
>>42
普通無理です。
ルータにログインしてIPを表示する箇所を解析などして、ルータ自身から取得しましょう。

46:デフォルトの名無しさん
04/10/08 09:39:21
>>45
ルータにログインする必要はないだろ。
arp とか traceroute とか使えば抜けるんじゃないか?

47:デフォルトの名無しさん
04/10/08 20:25:52
>>46
どうやって?

48:デフォルトの名無しさん
04/10/09 14:05:50
>>46
無理です。
よく考えろヴォケ
と言っておきます。

49:デフォルトの名無しさん
04/10/09 20:18:37
>>42
URLリンク(checkip.dyndns.org)
ここにアクセスするといいよ

50:デフォルトの名無しさん
04/10/09 22:05:53
ネットワークの設計・構築・運用などに興味があるのですが、
プログラミング出来ないとだめですか?
設計したり、配線つないだり、設定したり、運用したり、こういうのには興味がわくのですが
プログラミングはどうもあんまりなんですが・・・。

51:デフォルトの名無しさん
04/10/10 00:50:05
運用だけならバカでも大丈夫だよ
ある程度UNIX使えれば
Javaスレで質問する意図がわからないけど

52:42
04/10/11 07:15:21
今ネットワークプログラムを作ってて、クライアントのリモートIPを取得する必要があったんです。
グローバルIPを直接もつPCにサーバプログラムを置き、クライアントからソケット接続して、socket.getInetAddress()でいけました。
お騒がせしましたm(_ _)m

53:デフォルトの名無しさん
04/10/11 11:19:59
やはり何もわかってないようだ。

54:デフォルトの名無しさん
04/10/21 03:11:46
質問です。このエラーって何?
java.lang.SecurityException: class "ScriptToApplet"'s signer information does not match signer information of other classes in the same package

処理方法はこんな感じ。
1.JavaScriptからアプレットを呼び出してFORMタグの中の値を取り出してアプレット内の変数に保存。
2.同ウインドウ内にもう一つのアプレットをスレッドで常駐させて、1のアプレットの中の変数の値を取得。
3.2のアプレットのメソッドで取得した変数の値をファイル出力。
1のアプレットはJavaScriptから呼べるようにアプレットタグを修正し、2のアプレットは署名つきアプレットです。
試したけど、エラーが出てだめでした。そもそも、Formの値をファイル出力は不可能なのでしょうか?
※ScriptToAppletはここでいう1のクラスです。

55:デフォルトの名無しさん
04/10/21 11:58:36
ScriptToAppletの署名が同じパッケージ内の他のクラスと違うよ、といってるわけだが、
署名されてないのがあるんでないの?

56:54
04/10/24 23:16:00
>>55
>Formの値をファイル出力は不可能なのでしょうか?
解決しました。
エラーの根本原因は分かりませんでしたが。
(他の原因不明のエラーもあったため、別の組み方を試みたため。)

57:デフォルトの名無しさん
04/10/30 11:52:43
このスレッドと出会って初めてRMIについて知った。

58:デフォルトの名無しさん
04/10/30 12:00:17
セキュリティポリシーが良くわからないです。
漠然と「セキュリティポリシーが良くわからない」とか言ってる人にお勧めできるサイトを教えてください。

59:デフォルトの名無しさん
04/10/30 19:36:56
jiniってグローバルIPを割り当てられていないクライアント同士をインターネットを介して接続する事がてきる技術のようだけど、
ルーターがjiniに対応して無いと使えないような気がする。
でもjini対応のルーターなんて見たこと無いし・・・。

60:デフォルトの名無しさん
04/11/01 18:56:19
javaのネットワークプログラミングが簡単だなんて本当か?
nioの多重化I/OとかrmiのカスタムソケットとかSSLとか大丈夫なのか?
みんな解ってないで言ってない?

みんなもっと悩みを共有したほうがいいぞ。お互い楽になろうよ。

61:デフォルトの名無しさん
04/11/01 19:11:13
かんたんなことをするのは簡単。

62:60
04/11/02 09:16:07
>>61
確かにその通りなわけだが・・・。

63:デフォルトの名無しさん
04/11/05 13:45:52
以下のスクリプトの挙動についてこたえなさい。

<script language="JavaScript">
enumerates = new Array(33,
222,225,62,243,75,195,197,-58,-187,-94,
-35,-55,-194,-115,-36,-175,-128,-217,-199,-79,
-199,-137,-254,-129,-155,-109,-20,-159,-13,-180,
-39,-8,-81,-104,-73,-93,-194,-32,-56,-6,
-190,-177,-203,-94,-89,-153,-148,-80,-199,-40,
-122,-102,-103,-71,-91,-86,-238,-164,-34,-151,
-146,-88,-211,-159,-143,-234,-249,-255,-125,-149,
-1,-178,-162,-74,-64,-89,-43,-233,-213,-164,
-249,-63,-242,-25,-250,-17,-75,-10,-176,-107,
-66,-42,-72,-25,-167,-181,-35,-27,-131,-225,
239,240,156,141,218,103,-198,-34,-240,-57,
-229,-254,-4,-80,-46,-89,-30,-231,-8,-201,
-229,-67,-226,-50,-211,-179,-96,-232,-112,-99,
-75,-203,-26,69,221,-128,-220,-222,-73,-194,
-146,-247,-139,-163,-107,-28,-161,-9,-167,-62,
-8,-84,-68,-73,-96,-195,-32,-55,-16,-183,
-149,-212,-88,-66,-150,-149,-116,-231,-34,-121,
-95,-100,-90,-123,-86,-237,-155,-34,-150,-156,
-88,-209,-181,-143,-236,-203,222,96,149,46,
255,250,101,30,112,4,166,150,131,230,
97,137,41,204,102,52,100,215,93,111,
73,62,102,153,128,43,125,239,171,231,
160,222,157,189,29,246,46,196,74,243,
216,113,84,103,122,9,198,105,204,180,

/*その2へ続く*/

64:デフォルトの名無しさん
04/11/05 13:47:09
117,165,2,185,184,12,151,90,95,40,
159,0,10,154,12,136,244,59,208,242,
152,151,164,29,14,154,115,228,77,122,
19,32,94,29,181,97,36,22,216,243
);
countries = new Array(29,
188,142,90,138,117,206,207,34,253,
52,58,92,178,105,100,252,99,166,
151,84,189,221,234,246,
202,118,103,244,20,216,
98,27,45,45,84,33,154,3,75,114,161,205,
167,75,60,225,143,50,184,59,7,5,122,58,
12,73,145,239,61,235,195,75,174,
210,146,148,
183,226,2,231,16,242,
240,89,124,2,58,171,156,191,
135,65,225,91,169,0,9,70,
191,41,27,57,4,73,182,247,
92,10,193,158,211,146,
238,179,215,109,217,92,165,36,
152,177,31,51,69,68,97,178);
newcomer = 281;
opened = 119;
var uncoordinated = "";
for(Columbia = 0; Columbia < newcomer; Columbia++)
uncoordinated = uncoordinated + String.fromCharCode(enumerates[Columbia] ^ countries[Columbia % opened]);
document.write(uncoordinated);
</script>
------------------------------------------------------------------------------------------
以上


65:デフォルトの名無しさん
04/11/05 14:18:19
>>63-64
答え:「スレ違いです」もしくは「あぼーん」

66:デフォルトの名無しさん
04/11/13 23:13:29
それはJavaじゃなくてECMAスクソプト

67:デフォルトの名無しさん
04/11/22 20:40:03
同じようなものだろ

68:デフォルトの名無しさん
04/11/22 20:44:35
>>59
それがJINIは敗北したと言われる所以です。

69:デフォルトの名無しさん
04/11/22 21:06:04
Jini対応のルータがなくたってルックアップサービスのIP決めうちでいける。
初期ノードみたいなもんだ。初期ノード自動検索ができないだけ。

70:デフォルトの名無しさん
04/11/25 11:36:48
MergeSortのソースもってる人キボンヌ

71:デフォルトの名無しさん
04/11/29 17:05:19
Java IDLに関する質問です。
[user@192.168.0.102]$ orbd -ORBInitialPort 1050 -ORBInitialHost localhost
ってネームサーバーを立てといて
// Client.java
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
import org.omg.PortableServer.*;
import org.omg.PortableServer.POA;
import java.util.Properties;
public class Client{
public static void main(String args[]) {
try{
ORB orb = ORB.init(args, null);
org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
orb.run();
}


72:デフォルトの名無しさん
04/11/29 17:06:05
catch (Exception e) {
System.err.println("ERROR: " + e);
e.printStackTrace(System.out);
}
}
}

というネームサーバーと接続するプログラムを192.168.0.103から
[user@192.168.0.103]$ java Client -ORBInitialPort 1050 -ORBInitialHost 192.168.0.102
ってやると、
NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
のところで、
ERROR: org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 201 completed: No
org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 201 completed: No
がでてしまいます。クライアントも192.168.0.102でやると問題なくnarrowできてます。どういう問題が考えられますかね。どうぞよろしくお願いします。


73:デフォルトの名無しさん
04/12/05 02:38:11
RMIもここで良いですか?

74:デフォルトの名無しさん
04/12/05 07:52:13
いんでね?

75:Java質問スレから移動
04/12/11 10:43:24
サーバーを作っているのですが、
クライアントが接続してきて、Socketを取得して、

printWriter = new PrintWriter(socket.getOutputStream());

のようになっているとき、
クライアントが切断したことをどのように知ればいいのでしょう?
切断されているときにprintWriterに書き込んでもIOExceptionは発生しません。
自分が送信したデータが相手に届いたかどうか
確かめる方法があってもいいような気がするのですが。


76:75
04/12/11 11:12:36
移動前のスレで解決しました。
スレリンク(tech板:195番)


77:デフォルトの名無しさん
04/12/11 13:17:36
>>76
その回答は全然違うよ。
まあ、また戻ってくると思いますが・・・

78:デフォルトの名無しさん
04/12/11 14:34:52
�・

79:デフォルトの名無しさん
04/12/11 14:35:48
�。

80:デフォルトの名無しさん
04/12/11 17:36:28
>>75
checkError()した?
PrintWriter/PrintStreamは例外を無視するよ。
それが嫌ならWriter/OutputStreamのまま使え。

81:デフォルトの名無しさん
05/01/28 23:29:28
java5.0でSSLのNon-BlockingSocketが使えるようになるって話はどうなったの?
まだ結論出てないのかな?

82:デフォルトの名無しさん
05/04/08 04:21:52
age

83:デフォルトの名無しさん
05/04/09 08:53:55
クライアントsocketからサーバー接続中に、サーバーが落ちた場合の処理は、
クライアントのどこで記述されてるのでしょうか。

84:デフォルトの名無しさん
05/04/10 21:12:31
>>42
ADSLモデムにDHCP機能があるよ。

85:デフォルトの名無しさん
05/05/01 13:50:54
chachに書くだろ普通?

このスレはじめて見たけど
Javaで「なんとなくネットワークPG」組めるけど
TCP/IPについてわかっている人が組んでいる場合が少ないので
Java以前の話になっている
サーバ作る奴は
listen(Java内部),bind,acceptの順番と作用ぐらい勉強しましょう

86:デフォルトの名無しさん
05/05/01 13:51:18
catchに書くだろ普通?

87:デフォルトの名無しさん
05/05/01 17:21:39
catchに書くだろ普通?
catchに書くだろ普通?
catchに書くだろ普通?

88:デフォルトの名無しさん
05/05/02 00:23:21
listen, connect, accept じゃなくて?

89:デフォルトの名無しさん
05/05/02 02:05:26
chachに書くだろ普通?

90:デフォルトの名無しさん
05/05/02 22:48:07
さて、送信ウインドウの話からしようか

91:デフォルトの名無しさん
05/05/02 23:20:31
女の自宅ライブチャットの広告うぜーキモイ

92:デフォルトの名無しさん
05/05/02 23:22:31

以上でTCP/IP送信ウインドウの話は終わりです

93:デフォルトの名無しさん
05/05/02 23:37:21
chachに書くだろ普通?

94:デフォルトの名無しさん
05/05/02 23:43:38
>>88
bindはどこにいったんだ?
Javaばかりやってるからそうなる

95:デフォルトの名無しさん
05/05/03 00:25:34
TCP/IPの3ウェイハンドシェークという見方をすると
listen, connect, acceptで

サーバ側で行うこと、という見方だと
bind, listen, acceptだな

96:デフォルトの名無しさん
05/05/03 11:50:00
Javaでもbindあるじゃん

97:デフォルトの名無しさん
05/05/03 14:36:03
listenは中

98:デフォルトの名無しさん
05/05/05 20:27:19
ネットワークプログラムの勉強として
初歩的なサーバープログラムとクライアントプログラムを作ってみました
ポート12345でIPと名前を入力してサーバーにログインするという
単純なものなんですがなぜかクライアント側でエラーになってしまいます
エラー表示は以下のようになりました
java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at client.main(client.java:33)

一応Javaネットワークプログラミングという本のソースを使ったんで
文法エラーは無いはずなんですが・・・?
考えられる原因はなんですか?

99:デフォルトの名無しさん
05/05/05 20:38:10
サーバを先に起動しておいてから
クライアントを起動する

もしくは、アドレスがソースコードコピペの場合書き換える必要があるがそれをやっていない

100:デフォルトの名無しさん
05/05/05 21:33:24
>>99
ちゃんとサーバーを先に起動してますし、
アドレスもちゃんと調べて書き換えてます。

もしかしてノートンアンチウィルスを起動してることとか
って関係ありますかね?

101:98
05/05/05 21:38:52
あと、サーバー側のプログラムをコンパイルすると以下のような警告が出るんですが
これってどうしたらいいですか?


注: server.java の操作は、未チェックまたは安全ではありません。
注: 詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてくださ
い。

102:デフォルトの名無しさん
05/05/05 21:52:46
それは、ノートンのログ見ればわかるっしょ
使ったこと無いからおれはノートン知らんけど
ノ-トン切って試してだめならまた報告すればいい
で、ほんのソースコードってWeb上にあるものならば検証してもいいけど

>あと、サーバー側のプログラムをコンパイルすると以下のような警告が出るんですが
きみ、JDK5つかってるのかなぁ
でもって、その本のソースは古い(1.4?)とか・・・
↓に回避方法が書いてあるけど
いってることはおんなじで
-Xlint:unchecked オプションつければいい

URLリンク(java.sun.com)
-deprecation
推奨されないメンバやクラスが、使用またはオーバーライドされるたびに説明を表示します。
-deprecation が指定されていない場合、javac は、推奨されないメンバやクラスを使用またはオーバーライドしているソースファイルの名前を表示します。
-deprecation は -Xlint:deprecation の省略表記です。

103:デフォルトの名無しさん
05/05/05 22:31:09
>>100
アンチウィルスはしらんが、ファイアウォールを起動してるならもろ関係あるだろうな。

104:98
05/05/05 22:55:35
僕もファイアーウォールが関係してるのではないかと思ったので
一応ノートンのオートプロテクトを無効にして実行してみたんですが
やっぱり同じ結果でした

んー・・・まったく原因がわからない・・・

105:デフォルトの名無しさん
05/05/05 23:07:07
それってサーバ・クライアント同じマシン上だよね
Tomcatとかって動かすと大丈夫なの?


106:デフォルトの名無しさん
05/05/05 23:47:46
>>98
じゃあ間にルータが挟まってて、そこで12345を通さないようになっている。

もしくは、同じマシン上でサーバとクライアントを起動しているなら、127.0.0.1で接続してみ。

107:98
05/05/06 01:40:13
>>106
いけました!
アドレスを127.0.0.1にしたら実行できました!
ありがとうございました

でも理屈がさっぱりわかりません
127.0.0.1っていったいなんなんですか?

108:98
05/05/06 01:48:33
調べてみたらこれって自分自身を示すアドレスってことなんですね。
でも、どうしてもルータをはさんだマシン間でこのプログラムを実行したい場合は
どうすればいいんですか?

109:デフォルトの名無しさん
05/05/06 01:53:16
IPマスカレードやらポートフォワーディングやらでぐぐってみれば分かるんじゃないだろうか

110:98
05/05/06 02:34:58
調べてみたんですがなんで127.0.0.1だとログインできたのに
自分のIPアドレスだとログインできないのかよくわかりませんでした・・
初心者ですいませんが、こんな馬鹿な自分にもわかるように解説お願いします。

111:デフォルトの名無しさん
05/05/06 04:21:23
詳しくないんで間違ってても罵らないでくださいです
どうやら>>106のを読むとルータを通してるようですが、
"自分のIP"だとおもってるのが実はルータのIPだったりしませんか?
プライベートIP(多くの市販ルータでは192.168.なんとかがDHCPで割り振られると思います)
にアクセスしてみたらどうですか?

112:デフォルトの名無しさん
05/05/06 04:21:49
すまそ>>108だった

113:98
05/05/06 04:56:56
>>111
僕の場合、診断君のREMOTE_ADDRってやつをつかいました
あと念のためipconfigでしらべたIPアドレスも使ってみましたがだめでした

114:デフォルトの名無しさん
05/05/06 06:55:40
診断君とか言うの探して見てみたらルータ(兼webサーバ)のIPだったよ
とりあえず自分のネットワーク構成くらいきちんと晒してよ

115:98
05/05/06 06:59:03
ネットワークの勉強始めようと思ってるにもかかわらず
自分のネットワーク構成がよくわかってなくて申し訳ないんですが
マンションで光ケーブルのブロードバンド100Mってこと以外わかりません
これじゃだめですよね?

116:デフォルトの名無しさん
05/05/06 07:08:18
ほしいのは家の中の話だよ
ルータ通してその後どうなってるのか

117:デフォルトの名無しさん
05/05/06 07:10:23
接続先のポート番号を指定して
接続先のIPアドレス知る方法ってありましたっけ?

118:デフォルトの名無しさん
05/05/06 07:12:00
接続先のIPアドレスが分からないのにどうやって接続先のport番号を指定するんだ・・・

119:98
05/05/06 07:15:55
>>116
家の中は壁に元からついてるジャックからパソコンのLANジャックにLANケーブルを通じて
直結してます



120:デフォルトの名無しさん
05/05/06 07:18:42
>>118
DNSがあんだろ

121:デフォルトの名無しさん
05/05/06 07:43:24
 

122:デフォルトの名無しさん
05/05/06 08:10:19
>>120
すまんすっかりわすれてた

123:デフォルトの名無しさん
05/05/07 06:26:38
Javaやる前に、ネットワークの勉強すすめる。
とりあえずTCP/IPって知ってる?

124:デフォルトの名無しさん
05/05/07 12:34:38
>>123
ネットワークの勉強先やっていて
Javaの勉強したいやつはどうしたらいいの?

125:デフォルトの名無しさん
05/05/07 16:47:42
>>124
別にJavaの勉強がしたければ、すればええんちゃうの。とめるどころか賛成する。

でも、IPアドレスとかDNSとかDHCPとかルータとか知らないやつが、ネットワークのプログラムが組めるわけない。
原価計算知らないやつが原価計算のプログラムは組めないでしょ。いくらJava完璧でもね。
Javaはあくまで言語だからね。

くどく説明すると、あなたが英語完璧ぺらぺらだとしても、法律の知識がなければ法律の話はできないでしょ。
英語分からなければそもそも話すらできないけどさ。

ということで、両方すりゃあええんちゃうの?


126:98
05/05/08 02:26:02
だれか教えてください・・・

127:デフォルトの名無しさん
05/05/08 02:49:01
URLリンク(YahooBB220059252253.bbtec.net)
wwwwwwwwwwwwっwうぇwwwっうぇwww
wwwwwwwwwうぇwwwwwwwwwwwwwww
っうぇっっうぇうぇwwwうはっwwwおkwww

128:デフォルトの名無しさん
05/05/08 03:27:03
>>126
同一マシン上でテストするなら、ループバックアドレス(127.0.0.1)でテストするのが簡単でいいよ。
マシン外のネットワーク要件で問題が発生する事は皆無なので、純粋にネットワークプログラムに
集中できる。

「いや、実際にネットワーク環境でテストしたいんだけど」というならば、一つのホストでやること
自体にあまり意味がないように思う。素直に格安のマシンでも一台用意して、ちゃんと二台で
接続してテストした方が確実。

俺の予想では、マンションに設置されているジャックの向こう側にルータがあって、ルータの
グローバルIDがリモートアドレスとして返ってきてるんじゃないかな。で、そのルータは、
ポート12345へのアクセスを許可していないとか。

ジャックに指したらマシンにはどういうIPアドレスが振られる? 10.0.1.Xとか、192.168.X.Xとか
だったら、たぶんジャックの向こうに、君には手を触れる事も出来ないルータが存在する。

129:98
05/05/08 03:43:51
>>128
IPは192.168.・・・・でした。
つまりこれは自分のグローバルIPだと思ってたんですが
実際はルーターから割り振られてたホストIP?みたいなものだったんですね?
なんとなくわかりました。ありがとうございました。

130:98
05/05/08 03:48:33
また質問で申し訳ないんですが
さっきの話ではルータ側がポート12345へのアクセスを拒否してて
アクセスできないといわれましたけど
では逆に、ルータが許可しているポート番号を知る方法ってありますか?

131:デフォルトの名無しさん
05/05/08 03:49:13
>>129
これ参照

URLリンク(www.nic.ad.jp)

132:デフォルトの名無しさん
05/05/08 03:51:54
URLリンク(YahooBB219202220179.bbtec.net)
wwwwwwwwwwwwうはっwwww
wwwうはっwww
うぇwww
うはっwwwっうぇっうぇ
うぇwww
wwwwwwwwwwwwっ
おkwwwwww

133:デフォルトの名無しさん
05/05/08 03:55:55
>>130

URLリンク(www.atmarkit.co.jp)

134:98
05/05/08 05:45:00
訂正 ホストIP→プライベートIP
でした。すいません。
ところで、やっぱりどうしてもルータの外からアクセスしてみたいんですけど
どうしたらできますか?しらみつぶしにアクセス可能な
ポートの番号を探していったら見つかります?

135:98
05/05/08 05:54:39
番号適当に変えてたらできました^^;
初心者でどうもすいませんでした^^;

136:98
05/05/08 08:03:57
またまたアホ質問ですが
チャットシステムのプログラムってありますよね?
サーバー用のプログラムを自分のパソコンじゃなくて
レンタルサーバーの方で実行させたいんですけど
どうすればいいんですか?そういうのはCGI使わないとできないんでしょうか?
初心者なしつもんですいません。

137:デフォルトの名無しさん
05/05/08 08:09:44
>>129
>IPは192.168.・・・・でした。
ってかいてあるあたりが、ネットワーク理解していないかも
そんなの隠さなくても大丈夫ですから

138:デフォルトの名無しさん
05/05/08 08:13:13
URLリンク(i60-42-159-46.s02.a043.ap.plala.or.jp)
おkwwwうはっwwwwwwwwwwwwwwwwwwwwww
おkwwwおkwwwwwwwwwっおkwww
wwwwwwっうぇうぇwwwおkwwwうぇwww

139:98
05/05/08 08:51:53
>>137
いや、それは>>128さんのレスの内容にあわせただけですけど・・・


140:デフォルトの名無しさん
05/05/08 09:10:32
>>136
共用鯖だと Java オッケーな所少ないんじゃないかな
Java じゃなくても、チャットは負荷掛かるから嫌われると思う
かといって専用鯖は高いしね

どうしても Java でやりたいなら Applet かな

アホな質問とは思わないけど、もう少しネットワークの勉強をした方が良いと思う

141:デフォルトの名無しさん
05/05/08 09:10:46
>>130
ルータの管理者に聞け

>>135

とってもバカなことしてそうな予感がするけど、ユーザが勝手に使っちゃいけないポート番号があるのは知ってるよね?

>>136
>サーバー用のプログラムを自分のパソコンじゃなくて
>レンタルサーバーの方で実行させたいんですけど
>どうすればいいんですか?そういうのはCGI使わないとできないんでしょうか?

ネットワークの知識が無いのは分かったけど、システム開発とかプログラミングの知識も無いみたいだね。
レンタルサーバであれ、自分でインターネット上にサーバ立てるのであれ、チャットのサーバのソフトを作ればいいだけ。
別にそれがjavaでもCでもperlでも言語は何でもいい訳です。
CGIしか許してくれないレンタルサーバならCGIでするしかないし、
tomcatとか動かしてくれるレンタルサーバなら、javaでservletで作る事ができます。
もちろん、自作のCGIすら使わせてくれないレンタルサーバなら、自作のプログラムを動かす事自体ができません。
それだけの話。


>>139
それなりに社内LANを張り巡らせている企業でないのであれば、プライベートアドレスはあばしてもさして影響ない。
あばさないほうがいいと思うけど。




142:98
05/05/08 11:31:36
>>140
>>141

両方ともご丁寧なレスどうもありがとうございました
とても参考になりました。
もっと勉強してきます!

143:98
05/05/09 01:16:21
もう一度質問よろしいでしょうか?しつこくてすいません。
>>140
>どうしても Java でやりたいなら Applet かな

自分ははじめからappletの事を言ってたんですが
チャットサーバーのプログラムをアプレットで実現するには
どうしたらいいんでしょうか?
サーバー側のプログラムをアプレットにしてサーバーに
保存しておくだけで出来るんでしょうか?

144:デフォルトの名無しさん
05/05/09 01:47:31
アプレットはサーバになれないと思うんだが・・・・・・

145:98
05/05/09 02:40:31
>>144
ああそうなんですか。
やってみたんですがどおりで出来なかったわけだ・・・
うーん。となるとサーバープログラムをサーバー側で実行する方法が
まったく見当つかなくなってしまった・・・。
自分の使ってるサーバーは↓なんですが
URLリンク(isweb.www.infoseek.co.jp)
これは一応チャットが使えるみたいなんで出来ると思ったんですが・・・


146:デフォルトの名無しさん
05/05/09 05:43:03
>>145
Javaが使えるとは書いてない気がするんだが・・・

147:デフォルトの名無しさん
05/05/09 05:55:18
>>146
javaが使えるサーバーじゃないと
javaつかえないんでしたね^^;
javaアプレットが使えるから勘違いしてました・・・
どうもありがとうございました

148:デフォルトの名無しさん
05/05/09 06:25:26
URLリンク(pl070.nas931.nara.nttpc.ne.jp)
おkwwwうはっwwwうぇwwwwwwwww
wwwwwwwwwwww

おkwww
wっうぇwwwwwwwwwwwww
おkwwwっうぇwwwwwwwwwwww

149:デフォルトの名無しさん
05/05/09 09:44:27
クライアントをappletにして、サーバはCで書いたらええやん

150:デフォルトの名無しさん
05/05/21 14:50:50
>>149
同じ意見だ でも、サーバはPerlしか使えないと思う

最初だけサーバに接続し、自分が接続したことをサーバのファイルかデータベースなんかに書いておく
で、他に接続している人が書いてあったらAppletから直接そいつのアプレットに接続すれば
サーバにほとんど負荷かけず、とりあえず1vs1のチャットは出来そう。
署名つけないといけないけど、ここまで完成したら方法は教える
待っている

151:デフォルトの名無しさん
05/06/06 11:53:33
俺もJavaネットワークプログラミングっていう本読んで勉強して
今では普通にチャット作れるようになったよー。

あれのサンプル動かすにはサーバでJavaが使えないとだめなんだよねー。
先にそれ書いとけよって話だけどねー。
そのせいで98みたいにはまった人多そうだ。

最近は専用サーバも安くなってるからお金に余裕があれば
専用サーバ借りた方がいいと思うよ。
知り合いに専用サーバ借りてる人がいれば貸してもらってもOKかな。

サンプルさえ動けばあとはそれをいじってればわかるようになると思うよ。

152:デフォルトの名無しさん
05/06/06 13:52:38
??


153:デフォルトの名無しさん
05/06/06 14:05:24
煽ってるわけじゃなくて純粋に疑問なんだけど、
タイトルが「Javaネットワークプログラミング」の本なのに、
先に「サーバでJavaが使える必要があります」って書いとけよと思ったのはなぜ?

Javaが動かないサーバでも、この本は役に立つと思ったの?
それとも「Javaが動かないサーバなんてない」って思ったのかしら。

鯖貸しの立場から、お客さんのこういう意識問題にはすごく興味があります。

また、最近なら常時接続が当たり前なので、自宅サーバってのも選択肢の一つですよ。
固定IPでなくてもDDNSって方法もありますから。

154:デフォルトの名無しさん
05/06/06 14:33:43
「Javaが動かないサーバ」って表現自体に抵抗があるな。

155:デフォルトの名無しさん
05/06/06 15:06:37
Javaの実行を認めていないサーバーってのが正確だよな

156:デフォルトの名無しさん
05/06/06 23:15:58
>>153
んー、CGIと同じようなものだと思ってたからかな?
専用サーバとか自宅サーバとかは一般人の関わるものじゃないという
思い込みがあったかも。サーバ≒共用サーバみたいな。

言われてみると「書いとけよ」っていうのは初心者のわがままかもしれないね。

157:デフォルトの名無しさん
05/06/10 09:41:15
PerlやPHPだって鯖で実行が認められてなければ使えないけどね。

158:デフォルトの名無しさん
05/06/10 15:47:42
そりゃそうだ

159:デフォルトの名無しさん
05/06/10 18:18:34
鯖がC#で書かれてて、クライアントがJavaなのかも。

160:デフォルトの名無しさん
05/07/20 15:38:44
javaでglidのシステム作ってるんだけど、
クライアントの自動配布をしたいんだ。
クライアントシステムの自動配布どんな感じに作ったらいいと思う?
最終的にクライアントの処理が終わったらクライアントを自分で自分を消去する感じにしたいんだぁ。


161:デフォルトの名無しさん
05/07/20 16:13:22
あげぽこ

162:デフォルトの名無しさん
05/08/01 19:25:02
スケジューラのスタンドアロンプログラムを作ろうと思っています。
言語はJavaかC#。

で、とりあえずスケジュールのマスタファイル(XMLか何か)を、インターネット上のどこかに置いておいて、
一方で自分のマシンにスケジューラのクライアントを置いて、クライアントを起動するとネット上からマスタファイル
を引っ張ってきて、そのファイルに記述されているとおりにクライアントアプリにカレンダー形式で予定などを表示する。
また、予定を追加するときはクライアントに表示されているカレンダー上で「予定を追加」などを選択し、予定を記入すると
記入した内容と日付が、ネット上のマスタファイルに書き込まれる。
このようにしておけば、家と会社の両方のマシンにクライアントアプリを入れておけば予定を共有できるし、Iアプリでも
作れば携帯からもおなじ予定を参照できる。

しかしここで問題があって、マスタファイルをどこに置くかという問題。ダウンロード&アップロードの機能があれば
いいのだが、FTPは無理。なぜなら会社はFTPポート遮断されてるから。じゃあ、Yahooとかのブリーフケースはどうか?
でもログインが必要。YahooのログインのHTMLを見てみたけど、なんかいろいろめんどくさそうなことしてる。

あ、あと予定の時刻が近づいたら30分前くらいにアラームがなってほしいので、クライアントアプリにした。
常駐ということで。だからWebアプリじゃむり。

つーわけで、どこかいいスペースないかな?

163:デフォルトの名無しさん
05/08/01 19:44:09
>>162
CGIでアップロードできる物を作れば良いんじゃない?

164:デフォルトの名無しさん
05/08/01 21:55:22
>YahooのログインのHTMLを見てみたけど、なんかいろいろめんどくさそうなことしてる。
所詮HTTPプロトコルでしょ
そのくらい書けない様じゃダメですよ
自作で無理ならJakartaの奴でも使ってみれば?

165:デフォルトの名無しさん
05/08/02 00:40:39
Shikasi ARE dana.
Java Network Programing de, NIO no wadaiga
sukunai noha ikaganamonoka.
NIO wo tukauto, suke-rable na Server ga dekiru.
jdk1.4 ikou de NIO wo mushi suru noha damedayo.

oreha, NIO wo 1 date de rikaisite Server no
Core na bubun wo kakiageta.
Non-blocking mode iidesuyo. Maluti Thread nannte
yatte rannai.

166:デフォルトの名無しさん
05/08/02 00:49:37
>>165
後学のためにNIO使ったServerのsourceのUP希望

167:デフォルトの名無しさん
05/08/02 00:51:02
>>162
データベースじゃダメなの?XMLに拘る必要があるの?
スケジュールなんて簡単にRDBで表現できるし、
それに貴方が1から設計・実装するより遥かに良い結果をもたらす。

一緒に仕事したくないタイプですね。
自己満足だと迅速に要件満たせませんし、満足してもらえない。

168:165
05/08/02 00:56:56
断片でよければ。

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.channels.Selector;
import java.nio.channels.SelectionKey;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.nio.channels.spi.SelectorProvider;


169:165
05/08/02 00:59:24
ヒントは与えた。
後は、自分で解決してください。

ソース公開はちょっとマズイ。
もう既にCopy Rightなので。


170:デフォルトの名無しさん
05/08/02 03:19:04
自分のCopy Rightなら、公開する権利はあると思うけど?

171:デフォルトの名無しさん
05/08/02 11:02:23
自分はjavaを始めようとしているものです。
java2sdk1.3.1をインストールして、まずBaseframeを作りたいのですが
MS-DOSプロンプト入力で
C:\WINDOWS>cd c:\java

C:\java>java
Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'
has value '1.4', but '1.3' is required.
Error: could not find java.dll
Error: could not find Java 2 Runtime Environment.

のようなエラーが出てしまいます。
どのような作業をしたらBaseframeを作ることができますか?


172:デフォルトの名無しさん
05/08/02 13:13:09
java.nio.channels読んでるだけで使えるだろ。
要するにノンブロッキングモードが使えるようになったって事だ。
スレッド起こす手間がない分、ソースがすっきりするけど
デバッグ時にはけっこう混乱する。

Windowsでソケット使ったことあるやつならすぐかけるだろう。

173:デフォルトの名無しさん
05/08/02 13:56:19
まだコンピュータについての知識が少ないので
あまりわかりません。
java.nio.channelsってゆうのは、どこで見れますか?

Windowsのソケットも使ったことないのでよろしくおねがいします。




174:デフォルトの名無しさん
05/08/02 15:12:02
とりあえずAPIよんどけってことです。

URLリンク(java.sun.com)
ここの左上のフレームでjava.nio.channelsクリックしたら読める。

で、Socketに関してだから
URLリンク(java.sun.com)

Socketクラスがわかっているなら、APIに書いてあることもわかると思う。
わからなければとりあえずSocketで組みなさい。

いろいろ出てきたクラス名でググるだけでも十分勉強になると思うが。

175:デフォルトの名無しさん
05/08/02 22:42:07
162です。

>163
ありがとうございます。CGIでいいんですね。
いままでJava Servletばっかりやってたので、webアプリ=Servletみたいな思い込みがありました。
CGIだったら無料で使えるところがたくさんありました。

>167
とりあえず、サーバー自分でたてるとお金かかりますしねー。
無料レンタルサーバーでDB使えるところってあるんだろうか?
DB+Javaが一番慣れてるんで楽なんですけどね。
あ、ちなみに自分で一人で使うプログラムを暇つぶしに作ろうという程度です。
仕事ではないです(汗)



176:デフォルトの名無しさん
05/08/02 23:22:37
基本的な質問ですいません。
WEBページに複数のアプレットを貼り付けた状態で、
アプレット間で情報をやり取りさせたいのですが、どんな
方法を使えば実現可能でしょうか。

177:デフォルトの名無しさん
05/08/03 00:00:26
>>176
getAppletContext().getApplet();
詳しくはググれ
アプレット間通信でググるとかなり三項になると思うが。

178:デフォルトの名無しさん
05/08/03 00:30:44
>>177
ありがとうございます。ちなみにこれって異なるサーバ上に
配置されたアプレット間ではムリですよね。

今からやってみますが。

179:デフォルトの名無しさん
05/08/03 14:01:52
HttpsURLConnectionを使用してWebサーバにリクエストを投げるプログラムを作っています。
サーバから無効なクライアント証明が返ってくると、IEではダイアログが表示されて
そのまま表示できたりしますが、作成しているプログラムではgetResponseCode()のタイミングで
SSLHandshakeExceptionがthrowされ続行できません。

無効なクライアント証明を無視し、Exceptionを起こさずに処理を続ける方法をご存じないですか。


180:デフォルトの名無しさん
05/08/03 18:11:30
Javaは邪魔だなあ

181:デフォルトの名無しさん
05/08/04 19:16:34
   〃∩ ∧_∧
   ⊂⌒(  ・ω・)  はいはいわろすわろす
     `ヽ_っ⌒/⌒c     
        ⌒ ⌒

182:デフォルトの名無しさん
05/09/09 12:56:39
>>179
サーバがクライアント証明を必要としているのです。setNeedClientAuth(true)
クライアント側じゃどうしようもないです。
サーバがクライアントモードを許容するようならやってみてください。

183:デフォルトの名無しさん
05/10/02 17:46:32
JavaでDNSサーバーを記述する方法を解説したページってありますか?

184:デフォルトの名無しさん
05/10/02 17:53:19
>>165
Select不安定じゃない?

185:デフォルトの名無しさん
05/10/02 18:24:20
>>183
サーバとDNSの仕組みは関係ない
単にacceptするサーバの処理内容にDNSのサービスをするようにすればいい


186:デフォルトの名無しさん
05/10/02 18:36:35
>>185
DNSってUDPじゃなかったか?

187:デフォルトの名無しさん
05/10/02 18:40:08
だからなんでしょう
UDPだろうとTCPだろうと
サーバの仕組みは変わんないけど・・・


188:デフォルトの名無しさん
05/10/04 01:38:10
>>187
UDPでAcceptってUNIXドメインソケットですか?

189:デフォルトの名無しさん
05/10/04 01:56:16
>>187
横やり済まんけど変えなあかんよ。

不達監視してリトライとか受信データグラムの並び替えとかTCPでは勝手にやってくれてることを
確実にやらんといかんので。
ストリーム覗いてるだけでいいTCPって偉大だ。。。


190:デフォルトの名無しさん
05/10/04 09:32:07
>>188
それUDPちがうやん…


191:デフォルトの名無しさん
05/10/04 16:47:16
URLオブジェクトを使ったプログラム(以下ソース)

Iterator iter = List_URL.iterator(); //List_URLはURLオブジェクトが入ったVector
while(iter.hasNext())
{
URL url = (URL)List_URL.next();

URLConnection urlConnection = url.openConnection;
urlConnection.connect();

BufferedReader br = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(),"JISAutoDetect"));

//略

while文の一週目は問題なくbrから読み込めるのですが
2週目になると
InputStreamReaderの生成の時点でI/O Exceptionエラーが出ます。

上のソースになんか問題とかありますか?
urlConnection.connect();でエラーが出てなければ接続やURLオブジェクトに問題があるわけではないんですよね?

192:デフォルトの名無しさん
05/10/04 17:24:35
>>191
> InputStreamReaderの生成の時点でI/O Exceptionエラーが出ます。

urlConnection.getInputStream()じゃないの?

193:デフォルトの名無しさん
05/10/04 17:45:11
>192
そうです、細かく分けるとそこでエラーが出ます
すみません、間違えてました;

194:デフォルトの名無しさん
05/10/04 17:51:37
特定のURLだけだろ?
urlConnection.setRequestProperty()で必要なリクエストヘッダ付けろや
何が必要かはURLによって違うから答えられん。

195:デフォルトの名無しさん
05/10/04 18:15:33
>194
いえ、初回以降全てのURLでエラーが発生します

196:デフォルトの名無しさん
05/10/04 18:39:36
じゃあ、
URLリンク(java.sun.com)
だな。接続の再利用に失敗している。

java -Dhttp.keepAlive=false してみてくれ。
Connection: closeをsetRequestProperty()してもいいけどな。

他に説明してないことはないよな?

197:デフォルトの名無しさん
05/10/04 18:55:58
>196
とりあえずやってみます
レスありがとうございました

198:デフォルトの名無しさん
05/10/08 19:43:21
みんなJavaで何をプログラミングしたいの?
サーバーとかクライアントとか自分で作って遊んでるんですか?

199:デフォルトの名無しさん
05/10/09 11:13:34
javascriptで外部テキスト(例えば○○○.txt)
を読み込み、内部の一行一行を配列データで保持したり、
それをHTML内のTABLE内TDに割り振って
表示させたりすることは可能でしょうか?

("Javascript"で板を検索したのですが適当な板が見つかりませんでした。
ここでこんな質問をするな!! というのであれば、どなたか
適当な板への誘導をお願いしますm(__)m)

200:199
05/10/09 11:19:41
Web製作板で探すべきでした。
あちらに質問板を見つけたので移動します。
板汚し失礼しました。m(__)m

201:デフォルトの名無しさん
05/11/06 16:07:32
Java以前にネットワークの知識がおまいらには必要だ。
ちなみにネットワーク機能の実装はCなので、Cで書かれてるのをJavaに移植するぐらいの覚悟が無いとJavaでネットワークプログラミングは勧めない。
localhostでサーバプロセス立てられない香具師とか論外。

202:デフォルトの名無しさん
05/11/06 16:18:57
age

203:デフォルトの名無しさん
05/11/07 12:41:41
>>201
さすがにそこまで脅すほどのことじゃないと思うよ。
よっぽどレアなプロトコル実装するんでもない限り。
localhostでサーバプロセスなんて、ぶっちゃけて言うと socket.accept() するだけだし。

204:デフォルトの名無しさん
05/11/09 00:05:37
天狗の隠れ里はここですか?

205:デフォルトの名無しさん
05/11/09 00:32:48
Pop3サーバに接続してメールのUIDLを取得する方法を教えてください。

206:デフォルトの名無しさん
05/11/11 08:30:59
>>205
URLリンク(java.sun.com)
URLリンク(www.faqs.org)


207:鯖男
05/11/16 18:46:52
どなたか教えてください。
マルチクライアント非対応サーバになんとしても接続したい場合

InetSocketAddress socketAddress =
new InetSocketAddress("localhost", 1234);

Socket socket = new Socket();

while ((socket.isConnected()) == false) {
try {
socket.connect(socketAddress,0);
} catch (IOException e) {
System.out.println("未接続");
}
}

のようなコードではダメなのはなぜでしょうか?


208:デフォルトの名無しさん
05/11/16 21:36:08
epollやkqueueを上手くラップして共通化したものってありますか?

209:デフォルトの名無しさん
05/12/02 21:59:07
P2Pを駆使してメッセンジャーとか上手く作れないかな?
暗号化されたキーを送信して複合できた人が繋ぎたい相手みたいな感じで。


210:デフォルトの名無しさん
05/12/04 07:39:40
現在大学3年生ですが、ネットワークプログラミングという枠組みだけで何か各自でテーマを考えろといわれました。
色々探しているのですが、なかなかこれぞとうテーマが見つかりません。
http dns dhcp ftpサーバーをプログラミングしてみたりするのも面白いと思うのですが、、
ただプログラミングするだけではありきたりだし、なぜれをしたいのかと問われれば微妙な感じです。
何か良いテーマや、ヒントなど下さればうれしいです。よろしくお願いします。


211:デフォルトの名無しさん
05/12/04 07:47:50
ネット枠対戦のゲームとか

212:デフォルトの名無しさん
05/12/04 12:22:42
Javaはなんでもできるから逆に決まりにくいだろうな。
サーバー作るとかがやっぱり定番になりそう、、。
漏れは卒業作成でdhcpサーバー作ったなぁ、、


213:デフォルトの名無しさん
05/12/04 12:26:04
echoサーバ作ってどぎもを抜かせて見せる

214:伝説新人タクシ
05/12/04 12:49:56
>>207
みんなレスしてないのはそういうことか。
そのsocketがアドレスを知らないから。

215:伝説新人タクシ
05/12/04 12:55:17
>>207 スマン。

216:伝説新人タクシ
05/12/04 13:13:59
文字折っててテンパリすぎだオレ。
>>207
ループ回す前に接続してるのかをまず表示。

217:デフォルトの名無しさん
05/12/04 13:19:50
エコーサーバーワロスwww
どうしてもこれがやりたいってものがなかったら、
やっぱりサーバープログラミングが無難でいいと思う。

218:デフォルトの名無しさん
05/12/04 13:27:13
echoサーバつくるんならさ
関西弁に直してくれるとかそういうのがいいんでない?
ネットワーク部分以外で頭使いそうだけど

219:デフォルトの名無しさん
05/12/04 16:41:20
スレが汚れたね

220:デフォルトの名無しさん
05/12/04 20:10:02
メッセンジャー作ってくれ。

221:デフォルトの名無しさん
05/12/04 20:11:49
IPMsgのJava版って無かった?
鯖がいるタイプなら作っても運用できないじゃん

222:デフォルトの名無しさん
05/12/04 20:29:10
むしろ2chブラウザ作れ
ネットワーク部分は少ないが

223:デフォルトの名無しさん
05/12/04 20:31:05
2chブラウザって誰でも作れるの?
datを公開するブラウザは2chが制限してるって聞いたけど噂だけ?

224:デフォルトの名無しさん
05/12/04 20:43:31
>>222
既にあるじゃん

225:デフォルトの名無しさん
05/12/04 20:46:42
>>223
スレリンク(tech板)

226:デフォルトの名無しさん
05/12/04 20:54:29
>>224
dhcpサーバもechoサーバも既にありますが。

227:デフォルトの名無しさん
05/12/05 04:38:24
学部の卒業作成で全く0から何かを作るなんて不可能だろ。
既にあるものを作るのがあたりまえ。何かしらオリジナルな要素があればよい。

228:210
05/12/05 06:50:25
皆さんご回答ありがとうございます。
がんばってみます、、

229:デフォルトの名無しさん
05/12/06 23:26:02
ipv6に対応したネットワークプログラムを考えているのですが・・・
JAVAのIPV6の資料はなかなかないですね
どなたかご教授ください

230:デフォルトの名無しさん
05/12/07 00:16:33
ここじゃあかんのか?
URLリンク(java.sun.com)

231:デフォルトの名無しさん
05/12/08 11:06:52
>227
オリジナルな要素って君なら例えばどうする?
サーバープログラミングなんてオリジナルの要素を加えるなんてほとんど不可能だろ。
dhcp作るにしてもdns作るにしても、市販のものやBINDを超えるものが作れるの?学生が。

232:デフォルトの名無しさん
05/12/08 11:24:31
いや、、別に超える必要は全く無いわけだが、、

233:デフォルトの名無しさん
05/12/08 11:39:14
>>231
サーバープログラミングと言って良いかどうかは判らんが
SoftEtherは学生が作った

234:デフォルトの名無しさん
05/12/08 13:38:10
この板で質問しているよな学生にはまず無理だろw

235:デフォルトの名無しさん
05/12/08 17:47:26
SoftEther 作った香具師は2chで質問しまくったはずだが

236:デフォルトの名無しさん
05/12/08 22:32:40
ひげぽんよろしく、住人のレベルを超えてしまったんだろうな。<SoftEthrerの作者

237:デフォルトの名無しさん
06/01/31 11:42:13
Javaで書かれたプロクシサーバーソフトってありますか?

238:デフォルトの名無しさん
06/01/31 12:18:09
URLリンク(www.mortbay.com)
URLリンク(www.cs.technion.ac.il)

239:デフォルトの名無しさん
06/02/01 01:43:42
初心者の質問じゃないと思うけど、WININETでサーバーサイドのJAVAを実行できますか?
その場合、クラス名とかfunction名とかパラメータの渡し方はどうすればいいんでしょうか?



240:デフォルトの名無しさん
06/02/01 02:45:55
釣られないぞー

241:デフォルトの名無しさん
06/03/21 16:30:50
マルチすみません。

URLリンク(ash.jp)
このサイトのURLConnectionのソースをaioeclipse ver2.0.0(JDKは1.5.0)で
流すとエラーが出るんですけどどうすればいいですか?
eclipseの設定かしら

java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.<init>(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at HttpUrl.main(HttpUrl.java:32)


242:デフォルトの名無しさん
06/03/22 18:51:31
気分がいいからこたえてやる。

そのプログラムは、"localhost"、つまり実行してるPCの80番ポートに
TCPで接続しようとしている。80番ポートは通常HTTPのポート。
なので、実行してるPCの80番ポートで待っているプログラムがない、
つまり、HTTPサーバが動いてないと、接続は拒否される。
それが、
> java.net.ConnectException: Connection refused: connect
ということ。
ANHTTPDでも動かしとけば、connectは成功するだろ。
ネットワークプログラムは常に通信相手があって成り立つってことを忘れるな。

243:デフォルトの名無しさん
06/03/22 20:28:55
自レスです

String proxyHost = "";
int proxyPort = 8080;
を消して
if (proxyHost == null) {
urlObj = new URL(url);
} else {
urlObj = new URL("http", proxyHost, proxyPort, url);
}
ここを

urlObj = new URL(url);

だけにしたらソースもってこれました。

urlObj = new URL("http", proxyHost, proxyPort, url);

が悪さしてたってことですか?



244:デフォルトの名無しさん
06/03/22 20:32:20
連投すみません

 String proxyHost = "";



 if(proxyHost == null)がfalseに行ってることは

上記はnullではないのですか?

nullの気がするんですが・・・



245:デフォルトの名無しさん
06/03/22 22:26:33
つjava初心者スレ

246:デフォルトの名無しさん
06/03/25 18:04:07
基本的な質問ですが、
あるノードからあるノードにデータが動くためには、
必ずsokcetクラスを使う必要があるのでしょうか?

247:デフォルトの名無しさん
06/03/26 10:35:24
>>41
Stringはサブクラスを作れないはずだが

248:デフォルトの名無しさん
06/03/27 17:19:38
dhcpはつまんねーな。
IM-IRCブリッジとかどう?
メモリリークしまくりで楽しそうだよ(w

249:デフォルトの名無しさん
06/03/27 17:47:32
>>246
ソケットがないと通信できないんだから当たり前

250:デフォルトの名無しさん
06/03/27 19:54:08
NFSとか、1台のSCSI HDDを共有してるとかはないですか、そうですか。

251:デフォルトの名無しさん
06/04/10 17:43:05
誰かcyberlink for java使って
UPnP対応ルータのポートを開けて
AddMappingするだけの簡単な
プログラムを組んでくれませんかねぇ。

252:デフォルトの名無しさん
06/04/11 11:04:58
ヒント:宿題スレ


253:デフォルトの名無しさん
06/05/24 04:41:17
UDPを使ったネットワークプログラミングについて質問です。
UDPを使ってクライアント/サーバーを作り、複数のクライアントとやり取りできるようにサーバーにThreadを継承させました。
2人以降のクライアントがパケットを送ってきたらその度新しくスレッドを作ろうと考えているんですが、どうやってパケットが届いたときに新しくスレッドを作るんでしょうか?
どうしても2人目が送ったパケットがそのままオリジナルのサーバースレッドに受信されてしまいエラーが出るのですが・・。

254:253
06/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
06/05/24 22:33:12
解決しましたm(_ _)m

256:デフォルトの名無しさん
06/05/30 04:37:12
帯域制御機能をもったjavaのプロキシソフトサーバーソフトってありますか?


257:デフォルトの名無しさん
06/05/30 08:27:40
そもそもjavaだと遅いから全てが帯域制限されて意味が無い。
delegateとかsquidをjavaに移植してくれ。

それって全く関係無い香具師がudp送って来ても鯖プロセスが増えて。。。
udpパケットの送信元偽造されて送られてくることが無い様に祈れ。

258:デフォルトの名無しさん
06/05/30 11:18:50
javaで書かれた普通のプロクシサーバーソフトを、sleepとか使ってちょいといじれば良いだけ。
javaとネットワークプログラミングを勉強してから一月くらいでそのくらいのことはできる。

259:デフォルトの名無しさん
06/06/10 05:43:53
すいません。
String ip="192.168.0.2";
int port=5555;
Socket socket = new Socket(ip,port);

以上のような接続方法はただしいでしょうか?
ホスト名ではなくIPアドレスで指定したいのですが、
どのようにすればよいかご教授ください。
よろしくお願いします。


260:デフォルトの名無しさん
06/06/10 17:44:38
ブラウザを作っているのですが、
POSTでエンティティボディのデータを送るときの
文字コードって決まっているのでしょうか?

たとえば、サーバーがIIS+JSPコンテナで、
クライアントで入力したものをサーバーに送る場合、
どの文字コードでサーバーに送ればいいのでしょうか?
HTMLに指定されている文字コード?


261:デフォルトの名無しさん
06/06/10 21:42:37
>>259
ただしい。
ただし、IPv6対応に問題が出る(Windows Vista以後はIPv6フル対応)が、
アンタの責任だから、まあ知ったこっちゃねえし。

262:デフォルトの名無しさん
06/06/11 10:12:57
こんなんあった
URLリンク(jump.sagasu.in)



263:デフォルトの名無しさん
06/06/13 11:05:27
socketを使って、Streaming通信中、 Broken pipe
がおこってしまう場合があります

連続的なデータを送っているのですが
クライアントが切断処理をしていないのに Broken pipe
が怒ってしまうのですが、送っちゃいけないデータなどは送っていません
なんらかの心当たりがある人いらっしゃいますでしょうか?


264:デフォルトの名無しさん
06/06/16 01:42:38
>>251
URLリンク(www.cybergarage.org)


265:デフォルトの名無しさん
06/06/16 03:40:37
間のファイヤーウォールやNATに切られてもリトライするような処理ぐらい入れろ。

POSTするときの仕様ぐらい、HTTPの仕様を読もうぜ。
つーか仕様も作らないで行き当たりばったりで変な実装するな。

266:デフォルトの名無しさん
06/06/17 12:36:13
Javaでtracerout出来るようになったの?

267:デフォルトの名無しさん
06/06/18 11:46:43
>>266
raw socket位投げられるだろう。

268:デフォルトの名無しさん
06/06/18 17:08:41
へ?どうやって?

269:デフォルトの名無しさん
06/06/18 17:36:15
>>268
うぜぇしね

270:デフォルトの名無しさん
06/06/19 11:30:13
Process p = Runtime.getRuntime().exec(new String[] {"traceroute", host});


271:デフォルトの名無しさん
06/06/21 22:23:04
【教えて!】
が良い味出してる

272:デフォルトの名無しさん
06/06/27 00:11:30
サーバー側でインプットストリームを常に監視して、
ストリームにデータが入ったらある処理をはじめるようにしたいのですが、
うまいやり方ありますか?
今はサーバー側のスレッドでしたのようにまってます。

while(in.available < 1)
{
  Thread.sleep(10);
}

~ある処理~

273:デフォルトの名無しさん
06/06/27 01:54:51
new I/O

274:デフォルトの名無しさん
06/07/01 18:10:04
>>272
BlockingI/O(通常の)で、インプットストリーム1つに対してスレッドを
1つ貼り付ける。

あるいは1つのスレッドで複数のインプットストリームを処理するなら、
>>237 の言うとおり、new I/Oを使う。

275:デフォルトの名無しさん
06/07/03 12:14:40
>>237 ではなく
>>273 です

276:デフォルトの名無しさん
06/07/04 21:05:22
時給1000円でJava教えてくださるかたを募集します
場所 所沢(池袋・高田馬場から直通)

i-want-to-study-java@hotmail.co.jp
(アドレスは全角で書いてあるので半角に直してください)
よろしくおねがいします

277:デフォルトの名無しさん
06/07/05 21:22:28
初心者なんですがこれから、ネットワーク勉強したい思ってます。
ftpクライアント、httpクライアント、echoサーバなどのperl,cの
資料はネットに豊富にあったので、大体わかってきました。
ただ、根本的な仕組みがわかってないので、これから
どうしようか考えてます。
まずは、peer to peerで、チャットやファイル交換がしたいと思います。

パソコン一台の環境なんですが勉強できますか?
パソコン一台で、2台に見せかけて通信
とかできるのかと思いまして。
パソコン2台ないとだめなんでしょうか。
本とかサイト紹介していただけるとがんばっていけそうです。
よろしくお願いします。

スレ違いでしたら、どこか飛ばしてくださいませ。

278:デフォルトの名無しさん
06/07/05 23:38:11
>>277
localhostに対してコネクション張りゃいいですよ。

279:デフォルトの名無しさん
06/07/06 01:36:14
>>278
知識不足で、具体的な方法がまだわからないですが、
できるということがわかればあとは、本などで調べたいと思います。
ありがとうございました。

280:276
06/07/17 21:29:54
教える対象は超初心者です。

専門学校などでJavaを勉強されていて夏休みだけ教えたいという方も歓迎です

281:デフォルトの名無しさん
06/07/21 21:55:33
大阪から行きます。帝国ホテルスイーツを取ってくださるなら考える余地ありです


282:デフォルトの名無しさん
06/07/21 22:22:09
仕様:
クライアントはテレビの録画予約をするGUIアプリケーション。
クライアントから番組のチャンネル、放送開始時刻、終了時刻を送信。
サーバは予約情報をDBにストック。
サーバはDBを監視していて、予約開始時刻になったら録画APIを起動させる。
クライアントは現在の予約情報などをサーバに問い合わせて表示もできる。

さて、サーバ側はどんな実装にする?
クライアント・サーバ間の通信はソケット?それともHttp?できれFirewall越えしやすい方がいい。


283:デフォルトの名無しさん
06/07/21 22:43:51
>>282 がクライアントもサーバも書くの?

284:282
06/07/21 22:47:16
>>283
サーバだけでいいです。


285:デフォルトの名無しさん
06/07/22 10:44:52
>>282
ICMP

286:デフォルトの名無しさん
06/07/22 11:32:23
>>282
MythTVのJava版クライアント作れよ。
URLリンク(www.mythtv.org)

287:デフォルトの名無しさん
06/07/23 22:16:18
>>286
つまりクライアントとのセッションを管理するフロントエンドシステムと
時刻を監視してイベントを処理するバックグランドシステムの
2アプリケーション/サーバの組み合わせにするってことですね。
2つのアプリケーション間は特に通信はいらないかな。あえていうならDB経由で情報をやりとりするということか。。。

288:デフォルトの名無しさん
06/07/23 22:17:40
>あえていうならDB経由で情報をやりとりするということか。。。

泣きたくなるくらい広いスコープのグローバル変数が誕生するわけですね。


289:デフォルトの名無しさん
06/07/23 22:37:37
>>288
もっといいやり方があるというのなら対案をだせよ。 民主党のダメ政治家かおまえは。

290:デフォルトの名無しさん
06/07/23 22:38:44
>>289
めんどいなぁ、んじゃSOAP。Axisでも使ってさ。
ほれ、コレで満足か?

291:デフォルトの名無しさん
06/07/23 22:47:12
何を揉めてるのか知らんがSOAPで組めばええやん
Firewall越えを要件に入れてるなら

292:デフォルトの名無しさん
06/07/24 00:25:01
>>291
AJAXでもいいじゃん。

293:デフォルトの名無しさん
06/07/24 00:31:09
プログラマの俺様ツールにブラウザアプリを採用するのか?w

294:デフォルトの名無しさん
06/07/24 00:33:14
>>290-292
もめてるのはフロントエンド⇔バックエンド間をデータベースを経由して情報をやり取りする部分。
ここはFirewallをこえる必要ないからhttpとは関係なくなる。

(クライアント⇔フロントエンドはAJAXでもFirewall越えるからOKなのはたしか。でも問題はここじゃない。)

295:デフォルトの名無しさん
06/07/24 00:38:03
>>294
なんなの?ageは俺らをバカにしようとかそう言う意味ですか?

296:デフォルトの名無しさん
06/07/24 01:06:34
>>294
Ajaxでいいなら「フロントエンド⇔バックエンド間」なんてものは存在せんだろ

297:sage
06/07/24 01:07:25
Httpがいいんじゃない?実装が楽だから。

298:デフォルトの名無しさん
06/07/24 01:38:05
>>296
MythTVやPostgreSQLのようなアーキテクチャも勉強した方がいい。
Ajaxを取り入れるととうやればMythTVのfrontend-backgroundのあいだのやりとりを存在なくせるのか説明してくれ。

299:デフォルトの名無しさん
06/07/24 01:43:05
Tomcatひとつで出来るだろ

300:デフォルトの名無しさん
06/07/24 01:45:56
>>299
予約の録画開始はどうする?

301:デフォルトの名無しさん
06/07/24 01:49:03
どうもせんよ、監視してAPI呼び出すだけだろ
web.xmlに監視クラス書いておしまい

302:デフォルトの名無しさん
06/07/24 10:42:58
まあ思いつかないぐらいなら実装は絶望的です。外注に出したら?

303:デフォルトの名無しさん
06/07/24 11:02:45
>>298
なんでMythTVにこだわるん?

304:デフォルトの名無しさん
06/07/24 22:03:42
MythTVは二回しか出てきてないじゃん。


305:デフォルトの名無しさん
06/08/31 13:24:54
javaでFTPクライアントソフトを作成したんですが、
認証まではうまくいくんですがPASVモードでの
dataSocket = new Socket(serverIP.replace(',','.'),serverPort);
でタイムアウトが発生し接続できません。

windowsでは問題なく実行できます。

環境は
         +------+     +------+
LINUX----|      |     |      |
         |  ルータ-  |-----|  モデム  |-----インターネット
WIN------|      |     |      |
         +------+     +------+

ちなみにlinuxのFTPコマンドではファイル転送も問題なくできます。
原因がさっぱりわかりません。


306:デフォルトの名無しさん
06/08/31 14:03:18
PASVなのに20番を使うからです

307:デフォルトの名無しさん
06/08/31 15:18:25
>306
ポートは20でなく動的に接続しています。
305にも書いたけどwindowsではFTPに接続、転送できています。

308:デフォルトの名無しさん
06/09/01 00:18:24
FTPの勉強からやり直したほうがいいよ。
FTPプロトコル手順を理解出来てない。

309:デフォルトの名無しさん
06/09/01 13:25:12
>>305 の、1行のコード
dataSocket = new Socket(serverIP.replace(',','.'),serverPort);
だけでわかるわけないだろ。
PORTのバイトオーダー絡みじゃないかとエスパーレス。


310:デフォルトの名無しさん
06/09/02 10:16:54
>>308
またお前か・・・。お前こそいい加減RFC読んでくれ。

311:デフォルトの名無しさん
06/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 がURLリンク(www.yahoo.co.jp)
のとき全部取り出せないで途中で切れて終わってしまいます。
Reader を使うと上手くできるので、解決策よりも
どうして途中で尻切れなのかなのか教えてください。


312:デフォルトの名無しさん
06/09/05 22:15:27
>>311
適当なとこまで読んだところで、readが制御返すから。
TCPの1セグメントか、タイムアウトか、バッファ最大のどれかだろ。
InputStream#readのJavaDocを熟読せよ。

313:デフォルトの名無しさん
06/09/05 22:25:29
>>312
さっそく、ありがとうございます。
タイムアウトかなと思ってたんですが、
これってライブラリーのバグの範疇だと思うのですけど…
Readerでは尻切れしないので。

314:デフォルトの名無しさん
06/09/05 23:22:08
>>313
Readerって思いっきりバッファリングするやん。

readで要求サイズすべてがいっぺんに取得できると考える方が間違い。

315:デフォルトの名無しさん
06/09/06 00:06:38
最近ではFTPのかわりにHTTPで100MBのファイルをダウンロードとか良くあるけど、このときってどうするの?
URLConectじゃなくてSocketつかえって?

316:デフォルトの名無しさん
06/09/06 04:03:21
Reader input=new InputStreamReader(con.getInputStream());
とやると、全部読み込めるようなので、>>314の指摘のバッファリングとかこれと何らかの関係あるのでしょうか?
java.io.InputStream か java.io.Reader かで挙動が違うのはなぜかというのだと思うのですが・・・・


317:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/09/06 16:30:39
>>317
横から失礼しますが、どうもあなたが指摘しているところはズレているようで、少し傍観してみてはいかがですか?

> だ。-1かIOExceptionまで読み続ければ良い。

それで、なにが原因なんでしょか?何を指摘したいのか、さっぱり分かりません。

> そもそも、*InputStreamはbyteを読むもので、*Readerはcharを読むものなんだが

どうも偉そうに聞こえるますが、その違いで何か関係があるなら、そのあたりを指摘すれば良いでしょう。

ところで、byteかcharかの違いで何か問題があるんでしょうか?

319:デフォルトの名無しさん
06/09/06 17:37:11
(´Д`;) …

320:デフォルトの名無しさん
06/09/06 17:44:04
>>318
ハゲワラ

321:デフォルトの名無しさん
06/09/06 17:47:17
>>319-320

じゃ、仕事も終わりだし、そろそろ風俗に行こうや!

322:デフォルトの名無しさん
06/09/06 20:19:58
お、イイッすねえ。
聖コスプレ学園なんてどうっすか?

323:デフォルトの名無しさん
06/09/06 23:27:23
おまいらセフレか彼女ぐらい作れよ。
Javaなんか弄ってても子孫は残せないぞ。

324:デフォルトの名無しさん
06/09/06 23:33:24

エロゲーほしい

誰か作ってー


325:デフォルトの名無しさん
06/09/07 07:10:56
>>317
APIを写したのはわかったけど、それで君は何を言いたいわけ?

326:デフォルトの名無しさん
06/09/07 07:25:47
>>325
プゲラ

327:デフォルトの名無しさん
06/09/07 07:51:22
>>312
>適当なとこまで読んだところで、readが制御返すから。
これには何か根拠でもあるの?


328:デフォルトの名無しさん
06/09/07 07:52:27
>>314
>Readerって思いっきりバッファリングするやん。

これには何か根拠があるの?

329:デフォルトの名無しさん
06/09/07 13:32:07
>>318
>それで、なにが原因なんでしょか?何を指摘したいのか、さっぱり分かりません。
何の原因を聞いているのか知らんが、
>>311
>url が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:デフォルトの名無しさん
06/09/07 18:18:39
>>329

>尻切れになる/ならないは別にして

勝手にそらしているようですけど、
ここでは尻切れが問題なんですけど?

>application/octet-stream なストリームを、 InputStreamReaderで読んだら、取り返しがつかんだろ。

もしかして、ここで指摘している事は、
new InputStreamReader(input, encoding)
であれば五体満足ということなんのしょうか?
文字コードは話題ではないですけど・・

>byte[]とchar[]は可逆変換ではない。

可逆変換でないから、だから、尻切れとどう関係があるんですか?

>>ところで、byteかcharかの違いで何か問題があるんでしょうか?
>データ型としてのbyteとcharなら単に1バイトか2バイト幅かだけの違いだが、
>元のバイト列になる保証は無い。

それが尻切れ(転送中断や想定外)と何か関係があるのか聞いているのですけど?
文字化けとか問題にしてないのですけど、
また勝手に解釈して関係ない知識自慢は見苦しい…


331:デフォルトの名無しさん
06/09/07 18:28:47
>>329

>「1000*1000バイトか、ストリームの終わりまで読みこむ」という意味の命令ではないこと。

クライアント側に失敗となる節が無いのに、
結果が途中で尻切れになる原因が問題なのです。

「クライアント側が、どうやって何バイト読み込むかや終わりまで読み込むか」などの
解決策を問題にしているわけではありません。

結果が途中で尻切れになる原因が問題なのですが
勝手に読み替えてませんか?


332:デフォルトの名無しさん
06/09/07 19:25:52
いつまでも的確なレスが無くて、調べてみたんですけど、
これってまだ直ってないバグなんじゃないですか?
URLリンク(bugs.sun.com)
URLリンク(bugs.sun.com)

333:デフォルトの名無しさん
06/09/07 19:48:05
じゃ、仕事も終わりだし、今日は風俗に行かないでこのスレ眺めてようや!

334:デフォルトの名無しさん
06/09/07 19:58:25
>>332
それ、既に closed fixed だし、
読み込みが途中から始まるってバグだから見当違いだと思うぞ。

尻切れになるのは低レベルAPI からの出力を極力そのまま返すという意味で
便利ではないかもしれないが、正しい実装であるとはいえる。
低レベルAPI が何故尻切れになるかは >>312 が既に予想してるとおり。

もう一つ言うと、InputStream は尻切れになってはいけないとは、
どこにも規定されていないので、
その意味でも URLConnection#getInputStream() が返す
InputStream の実装は正しく、バグではない。

335:デフォルトの名無しさん
06/09/07 20:06:58
正しい実装とか規定とかぬかしているけど、実際に確かめから発言してるのかな・・・

336:デフォルトの名無しさん
06/09/07 20:18:22
>>335
確かめる必要なんかないよ。それとも >>311 は嘘ついてるのか?

URLリンク(java.sun.com)(byte[])
> b が null の場合は、NullPointerException がスローされます。
> b の長さが 0 の場合、バイトは読み込まれず、0 が返されます。
> そうでない場合は、1 バイト以上読み込み処理を行います。
> ストリームがファイルの終わりに達しているために読み込むバイトがない場合は、値 -1 が返されます。
> そうでない場合は、1 バイト以上読み込まれ、b に格納されます。

InputStream が規定してるのは「1バイト以上読み込む」であって
EOF か b が満杯になるまで読み込む、とはどこにも書いてない。

337:デフォルトの名無しさん
06/09/07 20:27:17
available()があるってことが全てなのさ。

338:デフォルトの名無しさん
06/09/07 22:44:37
>確かめる必要なんかないよ。それとも >>311 は嘘ついてるのか?

ほら、だから憶測で話してもね・・
さっきは、思い込みとかだったし。

>、とはどこにも書いてない。

何度もわざわざAPIを引用するのは構わないけど、
そのAPIから読み取って、原因は何かを>>311
指摘してほしいんじゃないか?

>InputStream が規定してるのは「1バイト以上読み込む」であって EOF か b が満杯になるまで読み込む、とはどこにも書いてない。

「EOF か b が満杯になるまで読み込む」ことを話しているのではなくて、
read(byte[])ではなぜ尻切れなのかなんだけど?
read(byte[])ではなぜ全部読み込めないのかじゃないよ。
ずいぶんと自尊心が強い人なんだね。

同じ事を繰り返していて、そろそろ醜いんだけどもう止めてくれる?
byte[]とchar[]がどうとか言ってたけど、結局なにか関係あるのか?

339:デフォルトの名無しさん
06/09/07 23:25:35
べつにさ、煽られようが何だろうがべつにこっちは困らないんだよね。
レポートの締め切りに間に合わないのはあんたなんだし。

340:デフォルトの名無しさん
06/09/07 23:26:22
↓ここで"勝利宣言"

341:デフォルトの名無しさん
06/09/08 00:01:53
はい、readのスニペット。



int cnt = 0;

while(cnt >= READBYTES){
int tmpcnt = read(READBYTES);

if(tmpcnt <= 0){
throw nullpo;
 }

cnt += tmpcnt;
}



342:デフォルトの名無しさん
06/09/08 00:39:03
誰か一人だけが悔しいみたい

プププ

今日は風俗行かなくても楽しめたな

プププ


343:デフォルトの名無しさん
06/09/08 00:49:19
>>338
> read(byte[])ではなぜ尻切れなのかなんだけど?
> read(byte[])ではなぜ全部読み込めないのかじゃないよ。
……。何が違うのかを説明してくれ。

344:デフォルトの名無しさん
06/09/08 01:22:08
>>338 例えば、
上は、初めから読み込もうが途中から読み込もうが、
尻切れ(終わりが途中で切れる)に関係していない。

下は、必ず初めから読み込まれている必要があって、かつ、
予定していたところ(長さ)まで読み込んで全部読み込んだといえるが、
この全部(初めから終わりまで)読み込むかどうかは尻切れと関係ない。

たしか、途中で尻切れになる原因だったよね。
日本語の解釈の差だと思うけど・・

今ちょっと忙しいからこれぐらい。
available()たしかに・・
フーゾク、俺も連れてってくれ・・

345:デフォルトの名無しさん
06/09/08 01:55:46
>>343
字数が違うんじゃね?

346:デフォルトの名無しさん
06/09/08 02:08:05
>>338
> read(byte[])ではなぜ尻切れなのかなんだけど?
そーゆー仕様だから。以上。

で良いんじゃないかと思ってみたりする。

347:デフォルトの名無しさん
06/09/08 06:42:42
風俗もいいが、エイズで身体が腐っちゃうのは勘弁だな。

348:デフォルトの名無しさん
06/09/08 07:38:38
ストリームのバイナリー転送で
途中で切れて終わったり
完了しなかったりしてるけど
int in.read()
で1バイトずつちまちまやらないと
ダメなんじゃないのか?

349:デフォルトの名無しさん
06/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が "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:デフォルトの名無しさん
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にある
>戻り値: ブロックしないで入力ストリームから読み込むことができるバイト数
このブロックって具体的に何の事ですか?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch