ネットワークプログラミング相談室
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
NGNG0682デフォルトの名無しさん
NGNGNetscape Proxy Server とか chunked はずしちゃうよ。もちろん
Content-Length も無しで。それ以前に HTTP/1.1 だからといって
必ず chunked や Content-Length が付いている保証はない。
>>681 GET のみ、レスポンスコード&ヘッダなしでいきなりコンテ
ンツ返信ってやつだな。自作の Web 巡回ツールテストしてて 0.9
レスポンスにぶち当たってこけたことがある。
0683680
NGNGまじで?
サイズ保証したい場合は自分でまた何かフィールドつけることになるのか・・・
アホや・・・
0684デフォルトの名無しさん
NGNG0685679
NGNGコネクションが切れるまでがコンテンツ、だったら
データの終りまで行って切れたのか、それともエラーで切れたかの
区別が出来ないんじゃないですかね…
今 RFC を読んでるんですけど Chunked Message 出てます。
Content-Length は HTTP/1.0 の互換性のためで、
Chunked で送る場合は Chunked を優先して、サーバは Content-
Length は送るな、と書いてありました。
(↑英語正しく読めた自信無い、間違ってるかも)
chunk だと read しっぱなしじゃダメで、データを受信
するのにそれなりの仕組みが必要みたいですね…
0686682
NGNGhttp://www.geocities.co.jp/SiliconValley-PaloAlto/5694/rfc/rfc2068-ja.html
データの整合性を保証するなら長さだけじゃなく Content-MD5
までやってくれや。chunked message には「フッタ」もあり
だから (RFC2616 で修正されたかな?) そこらへんの実装も
難しいぞ。IE のコントロール使ってるとかアプレットとか
なら気にしなくても良いが。
0687685
NGNGありがとう〜
英文印刷して読んでやろうかと思っていたところでした、
ホント助かります。
0688デフォルトの名無しさん
NGNGRFCにはサイズを(Content-Lengthかchunked encodingで)「付けなけれ
ばならない(MUST)」って書かれてるんだけどね(さもないとPersistent
Connectionのとき切れ目が分からない)。
現実はそんなに甘くないということで。
0689デフォルトの名無しさん
NGNG情報が全く手に入りません。
何処かに良いサンプル落ちてませんかね。。
0690692
NGNGを、persistent connection の時はデータ長を明示的に渡さな
ければならないということを言い忘れてた。まぁどのみちサーバ
側が persistent connection を拒否して長さ省略で返す場合
もあるんだけどね。
0691デフォルトの名無しさん
NGNG0692デフォルトの名無しさん
NGNGそれを24時間だれでも遊べるようにしたいのですが。
自宅のPCにサーバプログラムを放り込んで、
24時間ネットにつなげっぱなしにすれば実現できますか。
大手のサーバのように、24時間信頼性の高い
(ちょくちょく切断されない)サーバを個人で運営するには
どうすれば良いのですか。
0693デフォルトの名無しさん
NGNGそれと回線は何なの?
0694692
NGNG外部から電話がかかってくると切断されますが…
0695682
NGNGmessage-body 長の決定方法に "By the server closing
the connection." って書いてあるから (RFC 2616 は
transfer-length になってる; 当然か)。Content-Length もしくは
Transfer-Encoding: chunked のどちらかを使わなければならない
という MUST 要求はなかった。
0696デフォルトの名無しさん
NGNGそれは保安器交換で直ると思われ
http://salami.2ch.net/test/read.cgi?bbs=isp&key=995877420
スレ違いなのでsage
0697デフォルトの名無しさん
NGNGこういうネットワークエラーがでるんですけど、
どなたかアドバイスお願い致します。
0698デフォルトの名無しさん
NGNG(・∀・)チンコ!!
0699デフォルトの名無しさん
NGNG0700デフォルトの名無しさん
NGNG0701デフォルトの名無しさん
NGNG精神的ブラクラにつき開くことなかれ
0702デフォルトの名無しさん
NGNGガイーン(T_T)
データ転送をHTTPで済まそうと思ったけど甘かったかな・・・
データ本体をパーズせずに転送エラーをチェックしたかったんだけど・・・
ご教授ありがとうございます。
0703デフォルトの名無しさん
NGNGttp://www.geocities.co.jp/SiliconValley-Oakland/1680/memo0008.html
0704デフォルトの名無しさん
NGNG0705デフォルトの名無しさん
NGNG調べてみます。これってサーバのCPU食いませんか?なんとなく心配。
0706デフォルトの名無しさん
NGNG0707デフォルトの名無しさん
NGNG0708デフォルトの名無しさん
NGNGメールがうまく送信できずに悩んでいます。
やっていることは、DNSに問い合わせて、MXレコードを引いて
直接相手側のSMTPにメールを送っています。
エラーの内容は、
>501 Invalid domain name
と出るのですが、なにか対処法ご存知の方いらっしゃいますか?
0709デフォルトの名無しさん
NGNGサーバーは、ポート7001と返してきたが、どうして?
クライアントもサーバも同じ7000でいいのでは?
0710デフォルトの名無しさん
NGNG0711デフォルトの名無しさん
NGNG相手SMTPサーバにあなたの側は、どう名乗っているかがちときになる。
0712チェックサム
NGNGIPヘッダーのチェックサムなんですが、適当な数字(2とか3)を入れ
てもパケットが送信出来てしまいます。何でエラーが起きないんでしょうか?
0713極めて不確か
NGNG1. ドライバが勝手に(親切にも)直してくれる。
2. 実はいつでもパケットは送信できる。受け取ったホストは
チェックサムを計算して、壊れたパケットだと見なして蹴る。
くだらん邪推書き込んでスマソ。どなたか詳しい方居りませぬか?
0714デフォルトの名無しさん
NGNGUDPにエラーを返す規定はないからエラーなどおきるわけがない。
もし、そのパケットの送信に対して相手が何らかの応答をしてきたとするならドライバが勝手に直したのだろうし
応答が帰ってこないのなら相手側が壊れたパケットだとして破棄したんだろう。
0716デフォルトの名無しさん
NGNGBufferedInputStreamは
どういう風に使えばいいのでしょうか?
0717デフォルトの名無しさん
NGNG簡単だろうとタカを括っていたのですが、予想外に苦戦してます。
いまのところnslookupコマンドを外部呼出しして結果をファイルにリダイレクトして、そこから読み込むという方法をとっているのですが、やはり自プログラムで直接引くようにしたいのです。
サンプル等も探したのですが、見当たりません。
なにか情報があったら教えてくださいませ
0718717
NGNG>>708
MXレコードはどうやって引いているのですか?
さっぱりわからなくて、困っています。やはり自分でソケットプログラムを
書いてDNSからのデータを解析しないといけないのでしょうか?
0719708
NGNG>相手SMTPサーバにあなたの側は、どう名乗っているかがちときになる。
それって、HELOコマンドのときのことですか?
HEROコマンドに対するレスポンスでエラーが出ています。
HEROコマンドの引数に、MIMEエンコードした文字列を入れちゃ駄目ですか?
>>718
dnsjavaというのを使ってます。
http://xbill.org/dnsjava/
0720デフォルトの名無しさん
NGNGReturn-Path、Received、Message-Idなどのヘッダー(エンベローブ)って
普通にDATAコマンドの後に記述しても駄目なんでしょうか?
だれか教えてぷりーず。
0721
NGNG教えてくださいませんか。
0722デフォルトの名無しさん
NGNGコネクション切断検知のタイムアウトなら
レジストリいじらないと
だめだったような(NTの場合)
0723
NGNG0724デフォルトの名無しさん
NGNG0725WInsock勉強中
NGNGサーバに何か要求しようとして、Connectした後Sendする前に
その要求がやっぱり不要になってしまった場合。
あるいは、SendしてRecvしている最中にいま受信しているデータが
不要になって、さっさと別の要求を出したい場合。
上記のような場合どうすればいいでしょうか?
現状は、問答無用でshutdownを実行しているのですが、
あまりよろしくないような・・・
やはりきちっとすべてのデータを受信してからでないと
次の要求はできないのでしょうか?
どなたか教えてください。
0726デフォルトの名無しさん
NGNGいきなりクライアントが shutdown する可能性があることを前提に
サーバーを作ってあれば(作っておくべき、異常終了に対応するため
にも)、それでも良いよ。
データの受信中にコマンドを発行したいなら、FTP みたくコマンドと
データ用に別々にコネクションを張るのが楽だと思うが。今、どうし
てます?
0727WInsock勉強中
NGNGデフォルトの名無しさん お返事ありがとうございます。
知識不足でFTPみたく・・・の部分はよくわからないのですが、
現状ではデータ要求のコマンド(というかメッセージ?)もデータ自体も
すべて同じ風にrecvとsendを使用して同じSocketでやり取りしています。
この部分を別仕様に変えるのはちょっと大変なので、サーバ側がいきなりの
shutdownに対応しているか?を確認してみます。
ありがとうございました。
0728デフォルトの名無しさん
NGNG0729デフォルトの名無しさん
NGNGいや、Cは関係ない。
知識さえ仕入れれば、Cでも何でもOK。
でも、ゲーム作るのは、C/C++のほうがいいかな。
0730デフォルトの名無しさん
NGNGないのでしょうか?
0731デフォルトの名無しさん
NGNG0732デフォルトの名無しさん
NGNGそうですね。反省。
0733デフォルトの名無しさん
NGNGbud compressionっていうエラーがでて、アドレスを引けない。
わかる人、教えて_(..)_
0734デフォルトの名無しさん
NGNGjavahouseの過去ログ検索で
dnsjavaで検索してみれ。
つい最近dnsjavaの話題があったぞ。
0735デフォルトの名無しさん
01/09/03 01:00ID:v81rkv8.1バイトづつレシーブするのとバッファにためておいて一行ずつ切り出すのとでは
どっちが効率いいですか?
操作自体は1バイトづつのほうがやりやすいと思うんですが・・
0736デフォルトの名無しさん
01/09/04 01:08ID:3J1vv5e.効率の定義にもよるけど・・・recv呼び出しのコストとか?
javaでいうBufferedStreamみたいなのを使えば、気にしなくて済むね。
エラー処理が面倒だけど。
0737デフォルトの名無しさん
01/09/04 07:05ID:MJCjZdvcためて1行ずつ切り出すと改行のない長い文字列を送信されたときにえらいことになります
0738ちょっと質問
01/09/04 14:27ID:Mo7rJ2/M以下、readn
ssize_t /* Read "n" bytes from a descriptor. */
readn(int fd, void *vptr, size_t n)
{
    size_t nleft;
    ssize_t nread;
    char *ptr;
    ptr = vptr;
    nleft = n;
    while (nleft > 0) {
        if ( (nread = read(fd, ptr, nleft)) < 0) {
            if (errno == EINTR)
                nread = 0; /* and call read() again */
            else
                return(-1);
            } else if (nread == 0)
                break; /* EOF */
        nleft -= nread;
        ptr += nread;
    }
    return(n - nleft); /* return >= 0 */
}
/* end readn */
0739デフォルトの名無しさん
01/09/04 20:36ID:Mo7rJ2/Miread = read(sockfd,buf,sizeof(buf));
write(sockfd,buf,iread);
とするとできるのに
while(( iread = read(sockfd,buf,sizeof(buf)) >0 )
  write(sockfd,buf,iread);
とすると予想した文字列bufを書き込んでくれません。
内部のバッファーに貯めちゃっているような感じがするのですが
なにが原因でしょうか。
Perlであれば $|=; みたいなおまじないがありますがC言語でも同じようなのがあるのでしょうか。
おねがいします。
0740デフォルトの名無しさん
01/09/04 23:39ID:xADXB3S6新しいのが出てるかもしれんので探してみ
0741名も無い名無し
NGNGどうすればいいのでしょうか?
0742デフォルトの名無しさん
NGNGwhile文を使った方で、毎回read()が何返してるかireadを出力してみたらどうでしょう?
while (iread = read(sockfd,buf,sizeof(buf)) > 0) { // >>739の')'の数あってる?
fprintf(stderr, "iread is %d\n", iread);
write(sockfd,buf,iread);
}
それと、
> 予想した文字列bufを書き込んでくれません。
という文字列は、read()で正しく読み出せていますか?
あと、sockfdがnon-blockingに設定されていて、
read()がEWOULDBLOCKやEAGAINなんかで0を返してきているって事はないですか?
0743 食いだおれさん
NGNG> しかし、TCP/IP本は必ずといっていいほどOSIも載せるから勘違いしている人も多いんだよな・・・
激亀レスだけど、OSIなんてほとんどの本に載ってないぞ。
OSI参照モデルが載っているだけだろ。
0744デフォルトの名無しさん
NGNG0745デフォルトの名無しさん
NGNGEWOULDBLOCKやEAGAINの時は、-1が返るはず
0748741
NGNG読んでみました。
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
の範囲のIPはローカルIPって事ですね?
0749 デフォルトの名無しさん
NGNGRFC1597読んだんだと思うが、public/private addressという用語。
global/localではない。globalは使う人が多いけどlocalはほとんど聞かない。
たぶんclient側のaddressと混同しやすいから。
うるさいかも知れないのでsage
0750748
NGNGためになります。
Thanks!
0751初心者
NGNGLAN上につながっている特定の相手のマシン(IPアドレスで区別)に、
ファイルを送り込みたい場合、
たとえば、相手のマシンにサーバもしくはクライアントの役目をするような
なんらかのソフトが入ってて、動いていれば、
いろんな手段で実現できると思うのですが、
相手のマシンが ただLANにつながっているだけ、
という状態では こちらのソフトからファイルを送り込む事は不可能ですか?
0752デフォルトの名無しさん
NGNG0753751
NGNGやっぱりだめですね
ありがとうございました
0754デフォルトの名無しさん
NGNG0755751
NGNG現在あるリモートメンテナンスソフトを
LAN対応させようとしてて、
リモート側のソフトをLANで入れられないかなーと・・・
よく考えたら、バカな質問ね
0756デフォルトの名無しさん
NGNGなんだけど、online manual にも、ものの本にも、データの
送り元のアドレスがセットされて戻るとしか解説されてないん
だけど、このfrom引数に送り元のアドレスが最初から
分かっている時に予め代入してから渡すと何かいいこと
あるんでしょうか?
いえ、そうしているソースを見た事があるので。
個人的にはまったく意味ないんじゃないのかなーって
思うんだけど。
0757デフォルトの名無しさん
NGNG特定アドレスからのパケットを受け入れる
0759ネット関係のプログラム作るの初めて
NGNGwinCEにも対応させる事を考えて、
WSAAsyncSelectを使用しないで(CE未対応なので)、
スレッドを用意してselectで通信を監視するようにしています。
selectで受信を判定して、recvする事は成功したのですが、
相手からの接続が切れた事(WSAAsyncSelectの、FD_CLOSEに相当する)
の判定のしかたがわかりません。
どうしたら良いのでしょうか?
いろいろ検索かけたり、ヘルプとかで調べてみたのですが、わかりません・・・
0760デフォルトの名無しさん
NGNGrecvが0を返した時
0761デフォルトの名無しさん
NGNG0762デフォルトの名無しさん
NGNGRubyはクソです。ゴミ箱逝きです。
いじょ
この発言をコピペしていただければ幸いです。
0763デフォルトの名無しさん
NGNGhttp://www.google.com/search?hl=ja&q=telnet+RFC+%93%FA%96%7B%8C%EA%96%F3&lr=
0764761
NGNGあのさあ、検索しても見付からないからここで聞いてるんだけどさ。
0765デフォルトの名無しさん
NGNG ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´
∧∧ ) (´⌒(´
⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡=
 ̄ ̄ (´⌒(´⌒;;
ズザーーーーーッ
0766765
NGNG ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´
∧∧ ) (´⌒(´
⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡=
 ̄ ̄ (´⌒(´⌒;;
0767765
NGNG ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´
∧∧ ) (´⌒(´
⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡=
 ̄ ̄ (´⌒(´⌒;;
0768デフォルトの名無しさん
NGNGこれでどうだ!:-P
ttp://www.geocities.co.jp/HeartLand-Kaede/8800/rfc/rfc1097j.txt
0769デフォルトの名無しさん
NGNG敢えて何番の者かは申しませんが親切に答えてくれた方ありがとうございました。
0770デフォルトの名無しさん
NGNGおお!ありがとう。
しかしこれはサブリミナルオプションらしいですね。
telnetそのもののRFCの日本語訳を希望。
わがままいってごめんちょ
0771デフォルトの名無しさん
NGNG…敢えて何番へのレスかは申しませんが…。
0772デフォルトの名無しさん
NGNG0773デフォルトの名無しさん
NGNG,__ | >>770が>>768のjokeに気付きますように。
/ ./\ \_____
/ ./( ・ ).\ o〇 ヾ!;; . iii|//"
/_____/ .(´ー`) \ ∧∧ . |;;; :.iii|/゙
 ̄|| || || ||. |っ¢..|| ̄ (,, ) ナムナム |;;; ,:iii|
|| || || ||./,,, |ゝ iii~ ⊂ ヾwwwjjrjww!;;;;:::iii|jwjjrjww〃
| ̄ ̄ ̄|~~凸( ̄)凸 .( ,,)〜 wjwjjrj从jwwjwjjrj从jr
0774デフォルトの名無しさん
NGNGクライアント(IE6)が転送を中断してsocketが無効になったときに、
なぜか無限ループになってしまいます。
ちなみに、自分でtelnetを使用して実験した場合では再現しませんでした
このソケットをselect()で調べると、常に読み取り可能。
受信バイト数は16777215バイト。となっています。
無効時には-1が帰るものだと思っていたのですが、
sizeof(rbuf)よりも大きい数が帰ってきたらエラーとして扱うべきなのでしょうか?
char rbuf[4096];
while (len = recv(session, rbuf, sizeof(rbuf) - 1, 0)) {
rbuf[len] = '\0';
printf("%s", rbuf);
}
0775デフォルトの名無しさん
NGNGrecv()が-1を返したときも、上のコードだとループは回り続けるけど、
if (len < 0) {...} みたいなコードは省略済み?
ちなみに、16777215は0x00ffffffだけど、
本当にこの値をrecv()が返してきてるの?
lenの値が16777215だった場合の領域破壊はこの際置いておくとしても、
そこのとこどうよ。
0776デフォルトの名無しさん
NGNG0777デフォルトの名無しさん
NGNG0778デフォルトの名無しさん
NGNGVBで、InetコントロールのOpenURLメソッドで取得したHTMLデータ
をシーケンシャルファイルに保存すると、2バイト文字が化けて
しまいます。これを回避する方法がありましたら、ご教授ください!
よろしくお願いします!!!
0779デフォルトの名無しさん
NGNG777getおめでとう。
で、ください。くださいと言ってます。
0780デフォルトの名無しさん
NGNG0781デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています