- 1 名前:echoちゃん [2008/02/29(金) 21:19:37 ]
- 主にソケットに関しての質疑応答スレッドです。
Programming UNIX Socket FAQ (日本語訳) www.kt.rim.or.jp/~ksk/sock-faq/indexj.html Winsock Programmer's FAQ (日本語訳) www.kt.rim.or.jp/~ksk/wskfaq-ja/ 関連リンクは>>2-10辺り 足りなかったら適当に付け足してね 前スレ ネットワークプログラミング相談室 Port20 pc11.2ch.net/test/read.cgi/tech/1186418855/ 関連スレ Java ネットワークプログラミング 【教えて!】 pc11.2ch.net/test/read.cgi/tech/1086238859/
- 372 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:39:36 ]
- あれ?システムコール実行中にコンテキストスイッチて起るんだっけか?
- 373 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:47:19 ]
- 起こらないとするなら、誰かがsendを喚ぶと、戻ってくるまで
システムフリーズするだけだな。
- 374 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:51:31 ]
- TCPは送信順番も送信内容も保障されるか破棄されるんじゃないの?
順番がかわるとか複製される可能性があるのはUDPじゃないの? おれなんか間違ってること言ってる? 手元の参考書にそう書いてあるんだけど?
- 375 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:56:01 ]
- 釣れた釣れた(^^)
バーカ >>374
- 376 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:01:15 ]
- >>375
スレ監視し続けてたんだね お疲れ様 釣れて良かったね おめでとう
- 377 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:46:29 ]
- >>372
普通に起こるだろ。 シグナルだって入るし、場合によっちゃスレッドだってスイッチする。
- 378 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 04:08:33 ]
- >>372
I/Oだったら普通にキューにぶっこんでコンテキストスイッチしないかな?
- 379 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 04:28:02 ]
- Winsockでconnect、send、recvそれぞれに個別のタイムアウト値を持たせたいのですが、
connectのみ WSAWaitForMultipleEventsでタイムアウトを判断して send、recvはsetsockoptを使って指定、 これで大丈夫でしょうか?
- 380 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 08:52:26 ]
- 今の今までスレタイがtypoだと思ってた俺愕然。
- 381 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 09:58:45 ]
- 65535まで続くよ!
- 382 名前:355 mailto:sage [2008/06/17(火) 10:05:16 ]
- >>367
シングルスレッドの場合でしょ、それは絶対にあり得ないと思うんだけど。 最近のカーネルは、カーネルプリエンプションだから、カーネル内部の処理 実行中にコンテキストスイッチすることもあるかも知れないけど、 ロジックの実行順序(逐次処理)が入れ替わることはないと思います。 >>373 それとはまた別の話ではないでしょうか。 sendを呼んだひとはブロックされるでしょうが、他のプロセスは 普通にシステムコールを実行することも、ユーザーランドのロジックも 実行できると思います。 >>374 私もそういう認識です。 TCPで1つのスレッドが送信した場合であれば、sendした順に相手側では recv出来ると思ってます。(何回recvすれば良いかは判らんけど。) 途中でパケロスしたり、物理的に線が切れたりした場合は、受信側に届いた 部分まで(これも、相手がsendした順)が受信出来る。 なにか間違ってます? >> all
- 383 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 16:49:35 ]
- >>479
- 384 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 17:04:56 ]
- >>379
- 385 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 17:14:26 ]
- >>579
- 386 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 17:23:55 ]
- getaddrinfoはブロッキングを起こしますか?
- 387 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 17:54:23 ]
- AI_NUMERIC を付けない場合は起こします
- 388 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:07:41 ]
- LAN接続PC間で、低速、高ping回線の環境を再現するにはどのような方法があるでしょうか?
自作の俺プロトコルアプリが低速回線環境でどういった影響を受けるのか調べたいのですが。 環境はWindowsです(98orXP)
- 389 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:19:43 ]
- そういうソフト使えばいいだろ。
- 390 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:50:44 ]
- >>367
TCPでそれがあったら大変だろ UDPでは十分ありうるだろうが UDPは順序がかわるどころか 複製されたりもするらしいからな しかしUDPって順序も保障されてないとなると 1パケットあたりの情報をどうやって認識するんだろうか 区切り文字やらパケットサイズ送っても 順序がかわったりしたらアウトだよな?
- 391 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:41:21 ]
- このスレに出入りする奴の発言とは思えんな。
- 392 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 21:56:19 ]
- UDPは来るか来ないかだけで、「パケット」という構造自体は保証されるだろ。
2つ以上のパケットをもってきて、その関連をどうこういうと面倒だけど。
- 393 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 09:28:59 ]
- UDPで順序が変わるってのはわかります。
例えば、 (1)udp_send("ABCD"); (2)udp_send("abcd"); とした場合、(1)で作成されたUDPパケットが相手HOSTに到達 するルートと、(2)で作成されたUDPパケットが相手HOSTに到達 するルートが同じだとは限らないですよね。 たまたま、(2)のUDPパケットが相手HOSTに到達するルートの方が 速い回線だったりした場合、受信側のHOSTでは、(2)(1)の順に UDPパケットを受信する事もあり得ます。 UDPパケット毎の順序は不定ですが、複数のUDPパケットが混ざる 事はありません。(シングルスレッドの場合) で、複製されるってのはどういう意味?
- 394 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:14:46 ]
- udp_send("ABCD");
とかが2回以上あったかのように 複数回届くことかと思われ で、実際そういうことがある パケットにインデックスとかつけて 2回目以降のやつは棄てればいいので問題ない
- 395 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:22:56 ]
- >>394
それって UDP側じゃなくて MAC側の仕様じゃないの? 結果は同じだけど・・・ 細かすぎるか?w
- 396 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:48:55 ]
- UDPパケットがネットワーク上で消失するってのは判るんですが、
重複するってのはなぜ? 誰がパケットを複製するの? マルチキャストであればルータがパケットを複製するってのは 判るんですが。
- 397 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:59:51 ]
- 論理的にはあり得ないけど、ハードやOS側が腐っている場合は、
勝手に複製されてしまうこともあるって事ですか。 man ping より 重複パケットと障害パケット ping ユーティリティは重複パケットと障害パケットを報告します。重複パケット はユニキャストアドレスに対しては起こるはずのないものですが、リンク層での 不適切な再送信によって引き起こされるようです。重複は様々な状況で起こる可 能性があります。低いレベルの重複の存在は必ずしも警告にならないかもしれま せんが、よい兆候ではありません。ブロードキャストもしくはマルチキャストア ドレスに ping する時には、重複が起こることが期待されます。実際に重複する のではなく、異ったホストから同じ要求に対して応答が行われからです。 障害を受けたパケットは明らかに重大な警告です。多くの場合、ping パケットの 経路のどこか (ネットワーク内かホスト内) のハードウェアの故障が考えられま す。
- 398 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:03:13 ]
- よって、パケットの複製は、UDPだから発生するとかって話では
ないってことですね。 ただ、TCPだと、勝手に捨ててくれるけど、UDPだとそのまま 複数回受信しますということね。 と、なっとくしました。 考え方が間違ってたら、指摘してもらえると嬉しいです。
|

|