トップページ⇒tech
956コメント340KB

ネットワークプログラミング相談室

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。 NGNG
主にソケットに関してのFAQ
0730デフォルトの名無しさんNGNG
使われているポート一覧を調べるにはひとつひとつbindして調べるしか
ないのでしょうか?
0731デフォルトの名無しさんNGNG
netstatのソースコードを見れば?
0732デフォルトの名無しさんNGNG
>>731
そうですね。反省。
0733デフォルトの名無しさんNGNG
dnsjavaをダウンロードして、lookupをためしてみたんだけど、
bud compressionっていうエラーがでて、アドレスを引けない。
わかる人、教えて_(..)_
0734デフォルトの名無しさんNGNG
>>733
javahouseの過去ログ検索で
dnsjavaで検索してみれ。
つい最近dnsjavaの話題があったぞ。
0735デフォルトの名無しさん01/09/03 01:00ID:v81rkv8.
ソケット通信で、文字列を一行ずつ取得したい場合、
1バイトづつレシーブするのとバッファにためておいて一行ずつ切り出すのとでは
どっちが効率いいですか?

操作自体は1バイトづつのほうがやりやすいと思うんですが・・
0736デフォルトの名無しさん01/09/04 01:08ID:3J1vv5e.
>>735
効率の定義にもよるけど・・・recv呼び出しのコストとか?

javaでいうBufferedStreamみたいなのを使えば、気にしなくて済むね。
エラー処理が面倒だけど。
0737デフォルトの名無しさん01/09/04 07:05ID:MJCjZdvc
>>735
ためて1行ずつ切り出すと改行のない長い文字列を送信されたときにえらいことになります
0738ちょっと質問01/09/04 14:27ID:Mo7rJ2/M
UNIXネットワークプログラミングのreadn関数って欠陥品に思えて仕方がないので質問。

以下、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/M
〜諸処理〜
iread = 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
自分のIPがローカルIPかグローバルIPかを知るには
どうすればいいのでしょうか?
0742デフォルトの名無しさんNGNG
>>739
while文を使った方で、毎回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
>>21
> しかし、TCP/IP本は必ずといっていいほどOSIも載せるから勘違いしている人も多いんだよな・・・

激亀レスだけど、OSIなんてほとんどの本に載ってないぞ。
OSI参照モデルが載っているだけだろ。
0744デフォルトの名無しさんNGNG
1年前の書き込みにレスする人、初めて見たヨ。
0745デフォルトの名無しさんNGNG
>>742
EWOULDBLOCKやEAGAINの時は、-1が返るはず
0746お胸おっぱいNGNG
>>741
RFC を読む。
0747742NGNG
>>745
あっ、すみません、おっしゃる通り-1ですね。ご指摘どうもです。(ペコ
0748741NGNG
>>746
読んでみました。
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 デフォルトの名無しさんNGNG
>>748
RFC1597読んだんだと思うが、public/private addressという用語。
global/localではない。globalは使う人が多いけどlocalはほとんど聞かない。
たぶんclient側のaddressと混同しやすいから。

うるさいかも知れないのでsage
0750748NGNG
あー、そう書いてありました、
ためになります。
Thanks!
0751初心者NGNG
自分のソフトが動いているマシンから、
LAN上につながっている特定の相手のマシン(IPアドレスで区別)に、
ファイルを送り込みたい場合、

たとえば、相手のマシンにサーバもしくはクライアントの役目をするような
なんらかのソフトが入ってて、動いていれば、
いろんな手段で実現できると思うのですが、

相手のマシンが ただLANにつながっているだけ、
という状態では こちらのソフトからファイルを送り込む事は不可能ですか?
0752デフォルトの名無しさんNGNG
>>751不可能
0753751NGNG
>>752
やっぱりだめですね
ありがとうございました
0754デフォルトの名無しさんNGNG
>>751は何を企んでいたのだろう?
0755751NGNG
別に企んでません(ワラ

現在あるリモートメンテナンスソフトを
LAN対応させようとしてて、
リモート側のソフトをLANで入れられないかなーと・・・

よく考えたら、バカな質問ね
0756デフォルトの名無しさんNGNG
recvfrom()の最後の2つの引数、特に struct sockaddr *from
なんだけど、online manual にも、ものの本にも、データの
送り元のアドレスがセットされて戻るとしか解説されてないん
だけど、このfrom引数に送り元のアドレスが最初から
分かっている時に予め代入してから渡すと何かいいこと
あるんでしょうか?
いえ、そうしているソースを見た事があるので。
個人的にはまったく意味ないんじゃないのかなーって
思うんだけど。
0757デフォルトの名無しさんNGNG
>>756
特定アドレスからのパケットを受け入れる
0758756NGNG
>>757
えっ、そうなんだ(汗
ありがと。
0759ネット関係のプログラム作るの初めてNGNG
windowsで、winsock使用で簡単な通信プログラム作ってます。

winCEにも対応させる事を考えて、
WSAAsyncSelectを使用しないで(CE未対応なので)、
スレッドを用意してselectで通信を監視するようにしています。
selectで受信を判定して、recvする事は成功したのですが、

相手からの接続が切れた事(WSAAsyncSelectの、FD_CLOSEに相当する)
の判定のしかたがわかりません。

どうしたら良いのでしょうか?

いろいろ検索かけたり、ヘルプとかで調べてみたのですが、わかりません・・・
0760デフォルトの名無しさんNGNG
>>759
recvが0を返した時
0761デフォルトの名無しさんNGNG
すんませんが、どっかにtelnetのRFCの日本語訳ないでしょうか?
0762デフォルトの名無しさんNGNG
>>761
Rubyはクソです。ゴミ箱逝きです。

いじょ
この発言をコピペしていただければ幸いです。
0763デフォルトの名無しさんNGNG
>>761
http://www.google.com/search?hl=ja&q=telnet+RFC+%93%FA%96%7B%8C%EA%96%F3&lr=
0764761NGNG
>>763
あのさあ、検索しても見付からないからここで聞いてるんだけどさ。
0765デフォルトの名無しさんNGNG
今だ!765ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡=
         ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
0766765NGNG
Rubyはクソです。ゴミ箱逝きです。
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡=
         ̄ ̄  (´⌒(´⌒;;
0767765NGNG
sage忘れた。スマソ
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡=
         ̄ ̄  (´⌒(´⌒;;
0768デフォルトの名無しさんNGNG
>>764
これでどうだ!:-P
ttp://www.geocities.co.jp/HeartLand-Kaede/8800/rfc/rfc1097j.txt
0769デフォルトの名無しさんNGNG
質問した事があるのですが、質問した事を忘れてました。
敢えて何番の者かは申しませんが親切に答えてくれた方ありがとうございました。
0770デフォルトの名無しさんNGNG
>>768
おお!ありがとう。
しかしこれはサブリミナルオプションらしいですね。
telnetそのもののRFCの日本語訳を希望。
わがままいってごめんちょ
0771デフォルトの名無しさんNGNG
礼儀正しいんだか無礼なんだか…デモチョトワラタ。
…敢えて何番へのレスかは申しませんが…。
0772デフォルトの名無しさんNGNG
770がチョット可愛くみえた。(笑
0773デフォルトの名無しさん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デフォルトの名無しさんNGNG
>>774
recv()が-1を返したときも、上のコードだとループは回り続けるけど、
if (len < 0) {...} みたいなコードは省略済み?
ちなみに、16777215は0x00ffffffだけど、
本当にこの値をrecv()が返してきてるの?
lenの値が16777215だった場合の領域破壊はこの際置いておくとしても、
そこのとこどうよ。
0776デフォルトの名無しさんNGNG
telnetのソースコードありますか?あったら下さい。環境はLinuxです。
0777デフォルトの名無しさんNGNG
そんなものはどこにでもころがってます。
0778デフォルトの名無しさん NGNG
ソケットに関してというわけではないので、恐縮なのですが。。。
VBで、InetコントロールのOpenURLメソッドで取得したHTMLデータ
をシーケンシャルファイルに保存すると、2バイト文字が化けて
しまいます。これを回避する方法がありましたら、ご教授ください!
よろしくお願いします!!!
0779デフォルトの名無しさんNGNG
>>777
777getおめでとう。

で、ください。くださいと言ってます。
0780デフォルトの名無しさんNGNG
FTPのLISTコマンドでファイル一覧を表示すると、.ファイルなどの隠しファイルが表示されませんが、隠しファイルまで表示するにはどうすればいいでしょうか?
0781デフォルトの名無しさんNGNG
-a
0782デフォルトの名無しさんNGNG
>>781
それはUNIXのlsコマンドの話でしょう。
自分が言ってるのはFTPの応答コマンドの話。
0783デフォルトの名無しさんNGNG
うちではだまってても .* 全部見えるな
0784デフォルトの名無しさんNGNG
>>782
LIST -aとか
NLST -aとかやってみ。
0785780NGNG
LIST -a でできた
すんませんね>>781
アリガトサン>>784
0786780NGNG
しかしRFC959にはそんなこと一言も書いてないね。
なぜだろう?
0787デフォルトの名無しさんNGNG
959はObsoleteだから。
0788759NGNG
>>760
ありがとうございます
遅レスで申し訳ない上に、さらに質問ですが、

それは、selectだけでは判定できない という事でしょうか?
今は、ソケット監視スレッドで
タイム0でselectを呼び出してループしてます
FDを見て、情報ありの時だけ recvするイベントをだしてメインでrecvしてます

ソケット監視ループで、recvもすれば良いのかなと思ったのですが、
でも、recvって、ブロッキングにならない使いかたできるのでしたっけ?
0789デフォルトの名無しさんNGNG
>>786
つまり厳密には鯖依存ってこと
>>787
大嘘こくな
0790760ではないがNGNG
>>788
それ(loopでselect()の復帰を待ってrecv())でよいはず。
コネクション断でもselect()はデータ到着とみなす。
select()がデータ来てるといってるのにread()でブロックすることはない。
ただ、Win系ならWSAEventSelect()なんかの非同期I/Oを使用するAPIを呼ぶと、
socketが自動的にnonblocking-modeに設定されるので注意。
0791790NGNG
あ、一部訂正。>>790のread()はrecv()でした。すまそ。
0792790NGNG
あ、一部訂正。>>790のread()はrecv()でした。すまそ。
0793788NGNG
>>790
>コネクション断でもselect()はデータ到着とみなす。
知らなかった・・・勉強不足

selectループはそのままに、
recv() が 0 の時 切断処理を行うようにしたら、うまくいきました
ありがとうございました
0794デフォルトの名無しさんNGNG
>>788
ここ一遍目を通しておくとよいよ。
http://www.kt.rim.or.jp/~ksk/sock-faq/indexj.html
0795デフォルトの名無しさんNGNG
winCEとwin32のソケット通信に関する質問を
WinCEスレに書いたのですが、
もしかして、こっちのスレに書いたほうが良かったのかなーなどと
思いはじめ、
図々しくもリンク貼ります
CEスレの93です
↓
http://piza2.2ch.net/test/read.cgi/tech/998569580/93
0796デフォルトの名無しさんNGNG
MFC(WinInet)にてサーバにHTTPS経由でファイルをアップロードしてます。
500MBのファイルを1MBで分割して500回POSTしてるんですが
400回目あたりを過ぎたところで受信要求がタイムアウトして
しまいます。。。んでリトライして行うとまたタイムアウト
んでまた・・・の繰り返しで
8回あたりリトライするとサーバから受信要求が返されます。

原因として何が挙げられるんでしょうか??
ただ単にサーバに負荷がかかってるのでしょうか?それにしては
ブラウザからCGIを直接起動するときの反応が通常のような・・・。

ちなみにMFCではPOSTするたびにコネクションを新規生成してます。
サーバはSolaris+Apache+PHP。
0797デフォルトの名無しさんNGNG
>>795
bind()のエラーだったらTIME_WAITによるAddress already in useの可能性大。
きみも>>794が紹介してくれたとこに一度行ってきなさい。勉強になるから。
0798デフォルトの名無しさんNGNG
ここ、いいですね
ありがとうございます
0799 NGNG
SendMailで受け取った複数ドメイン(*.aaa.com、*.bbb.net、*.ccc.ne.jp等)毎、
複数ユーザ毎のメールを一括でPerl等に出力し、
Perlで転送先へ仕分けして再配送したいのですが、
エンベローブの宛先アドレスや送信元アドレスをPerlへパラメータとして与えたいと
思っています。(MAIL From: [email protected] や RCPT To: [email protected]の情報)
sendmail.defでそれらしい設定を探しましたが、
以下のようなPOPDOMが最も近そうでした。

PSEUDO_POP_DOMAIN=yes/no
POPDOM_MAILER_PATH='/usr/sbin/lmail'
POPDOM_MAILER_FLAG=$PROG_MAILER_FLAG
POPDOM_MAILER_ARGS='lmail -d $h $u'
POPDOM_MAILER_MAXSIZE=100000
POPDOM_MAILER_MAXLINE=

しかし、上記の設定では、$uは宛先の@前のユーザ名のみなので、
@以降のドメイン名部分が取得できません。
また、送信元情報の取得もできません。
そういった情報は固定の変数に設定されているのでしょうか?($〜)

それと、ACCEPT_ADDRSで*.hoge.comという形式でドメイン受信の設定は
可能でしょうか。
TLDは手動設定でいいのですが、サブドメインの登録は自動化したいので、
DNSの*指定のように全サブドメイン対象の設定にしたいと思っています。
0800800NGNG
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800 800
0801デフォルトの名無しさんNGNG
やはり一つのポートには一つのソケットしかつなげられないわけですか?
0802デフォルトの名無しさんNGNG
>>881
基本的にはYes
しかし一つの代表ポートに複数の接続要求を出すことは出来る
TCPのテストプログラムを作って接続語の相手先のポート番号を確認すれば意味は分かる
0803デフォルトの名無しさんNGNG
winsock2.0を使ってプログラムしているのですが、
ひとつ不可解な現象にあって困ってます。
recvで受信するときに、改行文字(\r\n)が送られて来ても、
戻り値で2が帰ってくると思ってたのですが、1なのです。
どうしてでしょうか?

ちなみに、受信バッファを監視していると確実に\r\nが書き込まれてました。
0804デフォルトの名無しさんNGNG
あ、ちなみにtelnetで接続して試してます
0805デフォルトの名無しさんNGNG
>>803
質問内容がいまいちわからないですが、、、

socket層には改行文字なんて概念はありません
純粋にバイナリを送受信してるだけです

送信元が\r\nを送ったんなら、\r\nが届くだろうし、
\nだけを送ったんなら\nだけが届くでしょう
0806デフォルトの名無しさんNGNG
>>805
返答どうもです。
えっと、症状なのですが、確実に\r\nは送られて来てます。
しかし、recvの戻り値が1なので、単純に戻り値を元にバッファを連結すると
\nが上書きされてしまうのです。
0807デフォルトの名無しさんNGNG
相手がUNIXならtelnetを使っても改行コードは\nしか送られてこないはず
勘違いしてない?
0808デフォルトの名無しさんNGNG
W2kでtelnetして接続。
Enterを押して改行だけ送信。

char buf[4096];
memset(buf,0,sizeof buf);
len = recv(c, buf, sizeof buf, 0);

accept後に上記のソースで受信すると、
len = 1;
buf[0] = '\r';
buf[1] = '\n';

こういう状態になってます。
len = 2なら納得できるのですが・・・

と、いう話です。
0809デフォルトの名無しさんNGNG
ウザくて申し訳ないですが、ageさせてもらいます。
どなたか、よろしくお願いします
0810デフォルトの名無しさんNGNG
一対一でつながるwinsockのサーバーとクライアント両方を作ってます

つながっている状態から、

クライアントがソケットを切断した場合、

サーバー側は、一度ソケットを閉じないで
そのままlistenしても良いのですか?
0811デフォルトの名無しさんNGNG
閉じろ
0812デフォルトの名無しさんNGNG
>>810
接続受付用のソケットとデータ通信用ソケットの違いを理解していない奴が多すぎる
0813810NGNG
じゃあ、
閉じる(closesocket) -> socket生成(socket) -> bind ->
listenで良いのですか?
0814デフォルトの名無しさんNGNG
>>810
acceptで受け取ったsocketは閉じるとして、
bindした方は閉じる必要無いのでは?
0815デフォルトの名無しさんNGNG
>>813

812が言っていることに対して勉強し直せ。
0816810=813NGNG
やっとわかりました。自分の大ボケぶりが恥ずかしい。

1.bind->listen->accept用のソケット(socketで生成)と、
2.acceptで受け取ったデータ通信ソケットということですね

で、2は閉じて、また新たにacceptしなさい
ということですね
0817socksockNGNG
Win98で動作していたwinsockプログラムを
Win2kでビルドし直して動作させたところ、
30分ぐらいで止まってしまいました。

Win2kはSP2を適用しています。(SP1ではBugが…)
SP2でwinsockプログラムがうまく動作しないという噂
を聞いたことがありますでしょうか。
0818デフォルトの名無しさんNGNG
いっさいありません
0819デフォルトの名無しさんNGNG
>>817

OSを疑うよりもまず自分のコードを徹底的に疑いましょう。99.9%は自分のミスです。
0820デフォルトの名無しさんNGNG
WinInetって使えるの?
さっきちょっと調べたら送信要求タイムアウト設定できない
バージョンもあるじゃん。
WinInet使ってHttp転送しよとしてるんだけど、諦めろってことか?
0821デフォルトの名無しさんNGNG
>>819
0.1%もOSに責任があるようなOSなぞ逝ってよし
0822デフォルトの名無しさんNGNG
>821

マターリいこうよ、なっ?
0823デフォルトの名無しさんNGNG
>>821
0.1%って微妙な線だな
Winは45%くらい責任があるしなぁ
BSDくらいか?
0824デフォルトの名無しさんNGNG
>>823
なんでもOSのせいにするなって
0825デフォルトの名無しさんNGNG
大概の場合、自分のミスをOSが許容してしまい、環境が変わると発現する
でも結局ミスしているのは自分
以前、人殺ししたけど捕まらなかったから、また殺したら今回は捕まるのはおかしいと言っているようなもの
0826デフォルトの名無しさんNGNG
↑こいつ何言ってんの????????
0827デフォルトの名無しさんNGNG
>826

>825は>823に文句言ってんの。

分かった?
0828デフォルトの名無しさんNGNG
>>821

その0.1%のバグもほぼ対処法がある。
その対処を知らない/行っていないのはやっぱり開発者の責任。
0829元PGNGNG
>828

そうとも言い切れないと思うけど?

漏れは5年間でメーカーが認めたOSバグに2回遭遇したよ。
(汎用機でね、KシリーズとASシリーズ)
ASのバグなんて、工場のシステム2日間止まって大騒ぎ、保
証騒動になってた。
米国の開発チームにまで話がいったのどうのと聞いた。

OSのバグやと騒ぐ奴に限ってショボミスしてるというのは賛成
する。
大体、開発者のミスだもんな。

上記のトラブル時は、その考え方のせいで対応が遅れたけどな。
0830デフォルトの名無しさんNGNG
ネットワーク初心者なのですが、ソケットとポートに関する質問です。

まず、サーバがポート番号10000を見張っている、並列サーバ
(fork()する、またはマルチスレッド)だとします。サーバは、ク
ライアントから接続要求が来ると、要求を受け付けて、要求を受
け付けるためのプロセスをfork()します。fork()されたプロセス
はそれぞれサーバ側では10000番ポートを利用して通信を行いま
す。

クライアント1: 20000 <- TCP/IP -> 10000 :サーバプロセス1
クライアント2: 20001 <- TCP/IP -> 10000 :サーバプロセス2

ここで、疑問なのですが、要求を処理するためにfork()されたプ
ロセスは、それぞれサーバ側では10000番ポートを利用して通信
を行いますよね。クライアントが複数あった場合、10000番ポー
トに飛んできたデータは、サーバプロセス1に渡すべきかサーバ
プロセス2に渡すべきかどうやって判断するのでしょうか?
TCP/IPでの接続確立とは、こういったセッションの管理を自動で
やってくれるものなのでしょうか?それとも私、根本から勘違い
しています?
■ このスレッドは過去ログ倉庫に格納されています