[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 03/16 02:36 / Filesize : 99 KB / Number-of Response : 399
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



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/

367 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:13:06 ]
TCPだったら、sendした順に届くとは限らない。
スレッド関係なしに。
だから、逐次処理で
send( "ABCDE" );
send( "abcde" );

とかやっても、相手側で
abcdeABCDEと受信することも普通にある。


368 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:19:20 ]
おいおい。TCPでそれはないって。


369 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:22:45 ]
>367
え??

370 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:30:04 ]
次にお前は「ワーイ沢山釣れたー」と言う…

371 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:37:42 ]
winsockならwww.kt.rim.or.jp/~ksk/wskfaq-ja/intermediate.html#threadsafety
まぁ、どの実装でも、自前でコントロールすべしって結論になると思う

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だとそのまま
複数回受信しますということね。

と、なっとくしました。
考え方が間違ってたら、指摘してもらえると嬉しいです。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<99KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef