ネットワークプログラミング相談室 Port5
■ このスレッドは過去ログ倉庫に格納されています
0001Unknown
NGNGProgramming UNIX Socket FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/sock-faq/indexj.html
Winsock Programmer's FAQ
http://tangentsoft.net/wskfaq/
過去スレ:
ネットワークプログラミング相談室
http://pc.2ch.net/tech/kako/970/970344582.html
ネットワークプログラミング相談室 Port2
http://pc.2ch.net/tech/kako/1006/10062/1006258198.html
ネットワークプログラミング相談室 Port3
http://pc3.2ch.net/test/read.cgi/tech/1023359282/
ネットワークプログラミング相談室 Port4
http://pc3.2ch.net/test/read.cgi/tech/1034236536/
0449447
NGNG>UDPのことぜんぜんわかってないだろ
あっ、そうだ。
すまんすまん。
これおかしいな。
0450デフォルトの名無しさん
NGNGどのあたりがおかしいの?
0451デフォルトの名無しさん
NGNG0452447
NGNG> 依存しているとすれば 65535バイト
訂正
65535 −> 65535 - 20(IPヘッダ) = 65515
0453デフォルトの名無しさん
NGNGIPフラグメントのこと書いてるのに、IPヘッダサイズは関係ないってわからない?
0454デフォルトの名無しさん
NGNG2バイト。ただし、データ部+UDPヘッダ(8byte)込みのサイズをあらわす。
0455452
NGNG間違ってたのは分かった。
そこらへんはちゃんと考えずに適当に書いただけだから勘弁しろ。
>>454
IPヘッダにしろ、UDPヘッダにしろ、
パケット長フィールドには”結果”としての値が入るだけなので
そこから逆算したとして話をしたからまずかったな。スマソ。
要するに、UDPデータグラムのサイズの制限について
ソケットのどーのこーのというところが不明な点があるので
お前ら知ってたら教えてください、ということです。
0456デフォルトの名無しさん
NGNGつーか、ためしてみればいいのに。
ただ、多数にフラグメントしてる場合、パケットロスが無くても、ルータなどが勝手に破棄することがある。
せいぜい、8KB程度までにしとくのが無難。
0457デフォルトの名無しさん
NGNG0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNG0460デフォルトの名無しさん
NGNG0461デフォルトの名無しさん
NGNG0462デフォルトの名無しさん
NGNG0463デフォルトの名無しさん
NGNG同じホスト間で送る場合はTCPよりも遅くなるって話を聞いたんですが、何が原因で
こうなるんですか?
0464デフォルトの名無しさん
NGNG0465デフォルトの名無しさん
NGNGUDPには輻輳制御機構がないから、何も考えずにやると、経路上のボトル
ネックとなる区間の帯域を溢れるようなパケットを送出してしまい、
パケット損失が大きくなる結果、実質的に、そういう結果になる。
もっとも、その経路の帯域が十分広く、かつ空いていて、さらに遅延が
非常に大きい場合には、逆の結果が出ることもないわけではないが、
通常、空いているかどうかの保証なんてできないから、ある程度以上の
量のデータを送る場合には TCP を使う方が無難。
ストリーミング系のアプリケーションだと、ある程度のパケットの損失
は OK で、かつ TCPの再送機構がリアルタイム性の邪魔になるので、TCP
を使わず UDP その他のプロトコルを使うが、この場合、損失率が増えたら
送信レートを下げるような作りこみが、アプリケーションレベルで必要になる。
>>464
それって、もう過去の話だよな。
0466デフォルトの名無しさん
NGNG「ヨーロッパ方面では」ってヨーロッパ方面で昔はなんか特殊事情でもあったの?
0467デフォルトの名無しさん
NGNGX.25が大変普及してました。
>>447
まあ、自分のmachineのinterfaceのMTUを越えないのがいいでしょう。
こだわるのであれば、Path MTU Discovery(RFC1191)を。
0468pthread_create()が...
NGNGpthread_create: Error 0
どのようにやるのがよいのでしょうか?
よろしくおねがいします。
void *function(void *sock) {
...
}
main()
{
pthread_t tid;
pthread_attr_t attr;
...
newsockfd = accept(sockfd, (struct sockaddr *)&cli_addr, &clilen);
if(pthread_create(&tid, &attr, function, (void *)newsockfd) != 0) {
perror ("pthread_create");
exit(1);
}
}
0469デフォルトの名無しさん
NGNG0470pthread_create()が...
NGNGで大丈夫でした。
multithreaded server、
pthread に関してはどこで質問した方がよいの?
0471デフォルトの名無しさん
NGNGマルチスレッドプログラミング相談室 その2
http://pc2.2ch.net/test/read.cgi/tech/1037636153/
0472デフォルトの名無しさん
NGNG> multithreaded server
についてはここでもいいかな。
0473pthread_create()が...
NGNGThanks.
0474デフォルトの名無しさん
NGNGhttpの場合空行を送った時に返信が返ってきて、
smtpの場合一行ごとに返信が返ってきますよね。
それをその都度STDOUTに表示させたいのですがどうしたらいいでしょう。
0475デフォルトの名無しさん
NGNG> smtpの場合一行ごとに返信が返ってきますよね。
へ?
0476474
NGNGhttpの場合も正しくないデータを送ったら返信が返ってきますね。
$buf = <SOCKET> みたいにすると返信を待って、永久に止ってしまうので
どうしたらいいのかなあと思ったんです。
0477デフォルトの名無しさん
NGNGstdin --> your perl client --(TCP/IP)--> server
stdout <-- your perl client <-(TCP/IP)-- server
のような二本のパイプラインを扱う単純なecho clientのような
ものを作りたい、ということかな?
パイプラインが2本なので、シングルプロセス・シングルスレッドで
I/Oの多重化を行わなければデッドロックする場合があるのは当たり前。
1) select, pollなどを用いてI/Oの多重化を行う。
2) connect後にforkしてそれぞれのプロセスに一つのパイプラインを扱わせる
のどちらかを行えばいいだろう。
0478デフォルトの名無しさん
NGNG0480デフォルトの名無しさん
NGNG0481デフォルトの名無しさん
NGNGしかないんじゃないかなあ。
0482デフォルトの名無しさん
NGNG0483デフォルトの名無しさん
NGNG416 Requested Range Not Satisfiable 食らう。
あとサーバーがRangeに対応してない時は知らん。
0484デフォルトの名無しさん
NGNGただ、416が返る時でも、Content-Lengthが0の場合と
*/nnnのnnn(Content-Range: */nnnのnnn)の場合の両方あったような。
RFC2068準拠だと200が返る(Rangeは無視される)
0485デフォルトの名無しさん
NGNGそれはブロックしないと思うが・・
0486480
NGNG0487デフォルトの名無しさん
NGNGたぶん、TCP状態遷移の「LISTEN状態」から、
SYNを受けた後の「SYN RCVD状態」への遷移を、
select(2)で検知できるか、と聞きたいんじゃないのかな?
つまりaccept(2)する代りにselect(2)していいか、と。
FAQだけども、
答え: よい。readのmaskが立つからその後にaccept(2)すればいい。
0488デフォルトの名無しさん
NGNGマッチングサーバを介して接続すれば良い。
…という記述を本で読み、これだ!と快哉を叫んだのですが、
よくよく考えると、どうやったって繋がっている以上
相手のIPなんてnetstatでも打てば、まる分かりな気もします。
本当にマッチングサーバを介した場合は、匿名性を維持できるのでしょうか?
0489デフォルトの名無しさん
NGNG0490デフォルトの名無しさん
NGNGP2Pじゃ、間に受け皿でもない限り、どうやっても匿名にはならない。
MXやnyみたいなのが匿名と言われてるのは、IPとかじゃなくて、
その上で流れるデータの所在。
スイス銀行のマネーロンダリングみたいな物?
繋がっているのは特定のIPでも、流れているファイル自体は
そいつの所有物とはかぎらない、とか。
繋げている以上、相手のIPは同類の犯罪者なわけだけど。
クライアントにトロイ仕掛けてIP情報逆流させるなりで、
繋げてる奴全員列挙できれば丸ごとしょっ引かれるかも。
実際はおれも素人なのでわからんです。
間違ってたらフォローお願いします。
0491488
NGNG素人なんてとんでもない、大変勉強になります。
MXは聞いたことありますが、nyってのは初耳でした。
MXってP2Pなんですか…知らなかった…。
質問とは関係ないのですが、マッチングサーバに負荷をかけない方法を
模索してまして…MXのやり方は参考になりそうですねぇ…。資料探してみます。
そして、IPを隠すことはやはり不可能なんですね。罪のないチャットソフトとかなら
そこまで匿名性を考慮しなくても良さそうですが、チャット話がこじれて報復に
ポートスキャンとか…。うーん、どこまで責任を持てばいいのだろう…。
つまらない質問にレスありがとうございました。もちっと悩んできます。
0492デフォルトの名無しさん
NGNG0493デフォルトの名無しさん
NGNG>MXは聞いたことありますが、nyってのは初耳でした。
>MXってP2Pなんですか…知らなかった…。
とかいってるヤシが、
>ポートスキャンとか…。うーん、どこまで責任を持てばいいのだろう…。
責任どうのと言える立場なの?わかってねぇな。
てめーは、狼煙の火付け係程度なんだよ。
集落と集落を道でつないだら、伝染病のリスクが増したが交易で栄えた、ってころから
再ベンキョしろ。ばかレオパルドでも知ってたことだぞ。
0495デフォルトの名無しさん
NGNG接続していないと (ネットワークインターフェースがローカルループバック
しかないと) ソケットのオープンに失敗するんですが、そういうものなので
しょうか? こういう場合はケーブルが接続されるまで Sleep & Retry する
しかない?
0496デフォルトの名無しさん
NGNG0497デフォルトの名無しさん
NGNG0498デフォルトの名無しさん
NGNG繋げるにはどうしたらよいのですか。
0499デフォルトの名無しさん
NGNGRASじゃなかったかな
0500デフォルトの名無しさん
NGNG0501デフォルトの名無しさん
NGNGダイヤルアップのダイアログを出されて困ったり
0502デフォルトの名無しさん
NGNG明示することはできるよ
0503デフォルトの名無しさん
NGNG0504デフォルトの名無しさん
NGNG深い意味はないよね?
繋がるよ。
0505デフォルトの名無しさん
NGNG0506デフォルトの名無しさん
NGNG日経しか読んでないオヤジ連中ならそう考えるだろうねえ・・・
繋がる、のレベルにもよるが
0507デフォルトの名無しさん
NGNG繋がらない
なぜなら「Unix(Linux)」こんな訳の分からないもの実在しないから
0508デフォルトの名無しさん
NGNGwinsock 自体、もともと UNIX の BSD socket をベースにした
仕様だし、別にそんなに変なものじゃないよ。
まあ、winsock2 は結構機能が増えてるけど。
答は504で合ってるでしょ。
0509385
NGNG繋がるかどうかはそこで使用されるプロトコルの問題であって、
socketが繋がるわけではない
よってsocketは繋がらないが正解
それとLinuxはUNIXではない
0510デフォルトの名無しさん
NGNG含んでいるから注意な。
0511デフォルトの名無しさん
NGNGそういう意味では、BSDだってUNIXじゃないでそ。
つっこむならBSDもLinuxもUNIXじゃないってつっこんでYO!
0512デフォルトの名無しさん
NGNGヤシは、経験上はUnixを勉強したてで他人に蘊蓄を語りたくて
仕方がないか、文脈の判断もできないか、脊髄反射でレスつけてる
だけのDQNが多いな。
0513デフォルトの名無しさん
NGNGきちんと調べてから書き込め
UNIXではないBSDはライセンスにひっかかるコードを削除したBSDLite系から
Socketの源流は4.4BSDなのでUNIXのライセンスが存在する
0514デフォルトの名無しさん
NGNG微妙にヘンなこと言ってませんか?
0515デフォルトの名無しさん
NGNG得たソフトウェアであるという意味で定義したいようでつね。その意味でいうと、
オリジナルのsocket仕様を作った4.1aBSDは、UNIXですが、現代の全てのBSDの
元である4.4BSD-Liteは、裁判沙汰からの和解の結果、現SCOの持つUNIXのライ
センスを必要としないと確定していまつ。ですから、4.4BSD-Lite以降のOS、
すなわち現代の全てのBSDは全てUNIXではないでつ。
513の言いたいことは、たぶん、こういうことでしょう。
しかし、現時点での、UNIXという単語の公式な定義は、Single UNIX Specification
に適合したソフトウェアであることでつ。従って、SUS に適合しっこない
4.1/4.2BSDは、そういう現代的な意味でのUNIXではないでつ。
513のUNIXの定義よりも、こちらのUNIXの定義を選ぶのが、現時点では正式でそ。
というわけで、513よりも511の方が、現代的UNIXの定義の上からは、正しいでつ。
0517デフォルトの名無しさん
NGNG0518デフォルトの名無しさん
NGNG0519デフォルトの名無しさん
NGNGLite以降のBSDや、Linuxのことを指して(UNIX互換OSという意味で)
UNIXと呼ぶことがある (例えばLite系のBSDスレは、UNIX板にある。
そういう意味では、MacOS X は UNIX。
Mac は、OS じゃなくてハードウェアの名前だから、UNIXじゃない。
あと、NT系のカーネルを持つWindowsはPOSIX.1互換機能を持つが、
それだけだと互換度が全然足らんのでUNIXとは普通呼ばれない。
勿論511や513の言ってる意味では、MacOS XはUNIXじゃない。
511や513の言ってる意味でのBSDでは、ある。
>>518
それ言うなら、PF_NSが繋がらないUNIXも沢山ありそうだぞ。
0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNG0522デフォルトの名無しさん
NGNG0523デフォルトの名無しさん
NGNG0524385
NGNGバグが出たら二度と直せないことになるが?
0525デフォルトの名無しさん
NGNG絶対バグは作りこまないと言う方法もある。
0526デフォルトの名無しさん
NGNGそれは現実的ではない。
ましてや「デバッグ出来ない」と明言してしまうような人間にとっては。
0527デフォルトの名無しさん
NGNG_n
( l _、_
\ \ ( <_,` )
ヽ___ ̄ ̄ ) カコイイ!!
/ /
0528523
NGNGそのうち誰かが直してくれるし。
0529523
NGNGC/Sのどちらかがバグってても、もう一方が頑張れば
なんとなく誤魔化せて動いてるように見えるってことかな。
0530デフォルトの名無しさん
NGNG0531523
NGNG"できない"ではなく"する必要がない"に近いでしょう。
0532デフォルトの名無しさん
NGNG直さなくていい類のものなら放置もアリだろうけど、
>>絶対に直さないよ。
とか
>>そのうち誰かが直してくれるし。
という言葉は何なのだ…ヤパーリ釣り?
0533デフォルトの名無しさん
NGNG> という言葉は何なのだ…ヤパーリ釣り?
それ以外に何があるのかと...。
0534デフォルトの名無しさん
NGNG1.110番ポートへアクセス
2.USER xxxxxxxx
3.PASS xxxxxxxx
4.QUIT
5.切断
6.25番ポートへアクセス
7.HELO
8.MAIL FROM:xxxxx@xxxxxxxx
以下略
と連続でやっているのですが、
時々rcpthostsにIPアドレスが反映される前に
SMTPでメイル送信しようとしてエラーになってしまいます。
POPとSMTPの間にsleepかなんか入れて間隔をあけたほうがよいのでしょうか?
もしくは、POPのSTATかなんかも行ってみるか...
0535デフォルトの名無しさん
NGNG0536534
NGNG553 sorry,that domain isn't in my list of allowed rcpthosts (#5.7.1)
0537デフォルトの名無しさん
NGNGサーバからのレスポンス ( 200 xxx is welcome など ) を確認してから
QUIT してクローズしてみたらどうでしょうか。
0538534
NGNGPOPサーバのレスポンスは確認しています。
+OK
という応答メッセージが返ってきます。
普段はうまく動いているのですが
時々エラーが出ています。
もしかしたら、サーバに負荷がかかっていると
rcpthostsの反映に時間が掛かってしまうのかな?
と思っているのですが...
0539bloom
NGNG0540デフォルトの名無しさん
NGNGやはり、お考えのように sleep でタイミングを取るか、
retry するように実装することになるでしょうか。
rfc にはそのあたりの記述はなさそうですし。
0541デフォルトの名無しさん
NGNGどうしてじゃーゴラァ
とISPに聞くのが一番ではないかと。
0542デフォルトの名無しさん
NGNG0543デフォルトの名無しさん
NGNG一般的なメーラーってたとえば?
俺の知ってるメイルクライアントにはそんな設定機能はついてなかったが。
一般的じゃないのかな?
MS製品とBecky!とShurikenだけど。
...確かに一般的じゃないかもシレソ
0544デフォルトの名無しさん
NGNGclientは、直前のPOPのauth.に成功した確信があるんだから、
> 553 sorry,that domain isn't in my list of allowed rcpthosts (#5.7.1)
をみたら、sleepしてretryが一番素直な仕様なんじゃない?
retryを、6-8のどこから始めるべきなのかはしらんけど。
# 時間、回数(>=0)が指定できればなおよし。
0545デフォルトの名無しさん
NGNGWeb上のコンテンツが更新されているかどうかというのを完璧に
チェックすることってできますか?
0546デフォルトの名無しさん
NGNGサーバーが嘘ついたら無理
0547デフォルトの名無しさん
NGNG少なくともBeckyは指定できるがきちんと確認したのか?
0548デフォルトの名無しさん
NGNGじゃあ、よくあるリンクチェッカーみたいなものは
毎回GETして以前キャッシュしたものと比べてるのかなぁ。
■ このスレッドは過去ログ倉庫に格納されています