トップページ⇒tech
1001コメント301KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2012/04/18(水) 17:15:34.85
主にソケットに関しての質疑応答スレッドです。

Programming UNIX Socket FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/sock-faq/indexj.html
Winsock Programmer's FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/

関連リンクは>>2-10辺り
足りなかったら適当に付け足してね

前スレ
ネットワークプログラミング相談室 Port26
http://hibari.2ch.net/test/read.cgi/tech/1269343909/
関連スレ
ネットワークプログラミング雑談
http://hibari.2ch.net/test/read.cgi/tech/1235800707/
Java ネットワークプログラミング 【教えて!】
http://hibari.2ch.net/test/read.cgi/tech/1086238859/
0263デフォルトの名無しさん2012/06/16(土) 23:19:49.73
TCP使ってもIPパケット断片化が原因の問題は起きうる。
(ill-functionalなhostは経路上にいないと仮定しても)
そしてTCPスタックが馬鹿だと、自分では解決しづらいことがある。

どういう時に起きうるかというと、
ルータの次の経路のMTUが極端に小さいのに、
fragmentationの実装は必須でないので実装してない場合。
(reassemblyの実装は必須)

まあ要するに十分小さいパケットを送っていれば気にする必要はない。
TCPスタックが行なっている解決方法は、
"Fragmentation Considered Harmful"を。
UDPプログラマはこの程度の内容は知っておくべき。
LAN内でしか使わないなら、なんちゃってプログラミングでいいと思うが。
0264デフォルトの名無しさん2012/06/16(土) 23:27:01.08
>>262
それがキミの考える「本質」なの?
0265デフォルトの名無しさん2012/06/16(土) 23:45:24.49
>>264
君の答えは?
0266デフォルトの名無しさん2012/06/16(土) 23:48:14.14
聞いておきながら自分が納得しないと怒ったり否定したりする愚者がいる
人に説明を求めて解答が常に得られると思っている蒙昧な者も多い
02672622012/06/16(土) 23:52:49.67
仕様がわかんないのでどうしようもない
0268デフォルトの名無しさん2012/06/16(土) 23:56:16.24
    _, ,_  パーン
 ( ‘д‘)
  ⊂彡☆))Д´) >>267
0269デフォルトの名無しさん2012/06/17(日) 00:02:38.85
>本質わかってないのは、何作ってるんだろうね?

ここで言う「本質」が何を指しているかわからんから、この文自体が
何を言っているかわからないというだけだろ?
別に何か意味があるわけじゃなくて、なんとなくもっともらしい台詞を
書いただけなのかも知れんが。
02702672012/06/17(日) 00:06:22.97
いたたた、なんでやねん
0271デフォルトの名無しさん2012/06/17(日) 00:06:24.02
俺は、本質わかってるだぜぇ。

って言いたいだけだろ。

ここまでのレスで内容が具体的に書かれてないところ見ると、本当かどうかは
かなり疑わしいから、普通にスルーでいいんじゃね?
0272デフォルトの名無しさん2012/06/17(日) 00:13:53.84
>>271
君は質問者か?
0273デフォルトの名無しさん2012/06/17(日) 00:20:41.17
具体的な内容書かれても理解できないからスルーしましたって話だね
0274デフォルトの名無しさん2012/06/17(日) 00:24:37.07
もしかして、一連の意味不明なレスはみんな>>181なんだろうか?
0275デフォルトの名無しさん2012/06/17(日) 00:25:28.46
>>273
そんな事は、その具体的なレス番を示してから言うことだよ。
0276デフォルトの名無しさん2012/06/17(日) 00:28:58.56
>>275
スルーしたレス番を示してみな?
0277デフォルトの名無しさん2012/06/17(日) 00:47:14.93
俺) 具体的な内容書いてるレスがない
>>273 理解できないからスルーしたんだろ
俺) 内容書いてあるレス番書きなよ
>>275 スルーしたレス番示せ

ひょっとして、馬鹿なの?

まあ、やっぱ脳内レスでしたというオチなんだろうな。
0278デフォルトの名無しさん2012/06/17(日) 00:55:55.40
>>277
スルーしたレス番を示してみな?
0279デフォルトの名無しさん2012/06/17(日) 01:55:08.65
結局それしか言えない訳ね。

それがわかれば十分、相手にした俺が馬鹿だったよ。
0280デフォルトの名無しさん2012/06/17(日) 03:52:26.83
今のnat前提インターネットでは当たり前になってるけど、なんでもかんでもtcpで送っとけば良いってのは違うと思うけどな。
udp要らないじゃない。

まあインターネットでudpで送ってもまず届かないから、lanやネットワーク管理者の管理下にある社内lan程度に留めとけってのは分かるけど。
0281デフォルトの名無しさん2012/06/17(日) 08:44:55.63
届く届かないとUDPかTCPかってのは関係ないだろ。
途中のreouterであえてUDPをブロックしたり優先度を下げているとかじゃなけりゃ。
0282デフォルトの名無しさん2012/06/17(日) 10:18:43.71
あいかわらず、馬鹿の突っ込み
0283デフォルトの名無しさん2012/06/17(日) 10:32:45.22
突っ込まれまくってる本人か?反論があるなら具体的に指摘してやれよ。
0284デフォルトの名無しさん2012/06/17(日) 10:35:48.73
いいや、馬鹿は馬鹿
0285デフォルトの名無しさん2012/06/17(日) 10:37:13.45
>>283
283=281?
0286デフォルトの名無しさん2012/06/17(日) 15:21:18.06
>>282
どのあたりが馬鹿なのか、解説してみろ。
0287デフォルトの名無しさん2012/06/17(日) 15:59:09.14
>>286
君のレス番は?
0288デフォルトの名無しさん2012/06/17(日) 16:14:10.70
>>287
>>281
0289デフォルトの名無しさん2012/06/17(日) 17:04:23.57
>>288
そこだけつっこんもしょうがねーだろ

馬鹿の壁
0290デフォルトの名無しさん2012/06/17(日) 17:20:45.61
じゃあ残りはお前が突っ込んでやれよ。
馬鹿にはできない突っ込みの手本というものを見せてくれ。
0291デフォルトの名無しさん2012/06/17(日) 17:37:32.28
なにこのグダグダな流れw
0292デフォルトの名無しさん2012/06/17(日) 17:42:04.99
元の質問者はまだいるのか?
0293デフォルトの名無しさん2012/06/17(日) 17:53:30.34
たぶん上でいろいろ突っ込まれていた奴が、反論できないけど
くやしいから何か言い返したくて「馬鹿」と言っているだけ。
0294デフォルトの名無しさん2012/06/17(日) 21:00:40.40
Linuxのプロトコルスタックの性能はどうなの?
昔はFreeBSDの方が1.1倍いいと言われていたが
0295デフォルトの名無しさん2012/06/17(日) 21:10:13.68
>>294
今はFreeBSDの1.2倍いい

ちなみにWindowsは33倍いい
0296デフォルトの名無しさん2012/06/17(日) 21:12:21.64
>>295
根拠はある?
0297デフォルトの名無しさん2012/06/18(月) 12:00:30.44
最近はプロトコルスタックの多くの部分がEthernetのチップ上で動いている@Windows
0298デフォルトの名無しさん2012/06/23(土) 22:14:47.79
ぶっとんだのか
0299デフォルトの名無しさん2012/07/17(火) 10:20:52.61
iocpで組む腕があるならwindowsでもいいかもな
0300デフォルトの名無しさん2012/07/20(金) 13:11:51.43
UDPホールパンチングの説明ってポートを開放していないクライアント同士の例ばっかりだけど、
ポートを開放しているPC-Aとポート未開放のPC-Bがあるとき、

1)B→Aに送信
2)Aは受信後、送信元(B)に送信
3)Bが受信

としたとき、2〜3番のA→BについてもUDPホールパンチングによって可能となった
と考えていいのかな?
0301デフォルトの名無しさん2012/07/20(金) 14:21:42.49
君がどう考えてもそれは自由だよ
0302デフォルトの名無しさん2012/07/20(金) 14:38:36.30
「2〜3番のA→Bについて『も』」と言っておるが、
(1)についてもUDPホールパンチングによって可能となったと考えているのか?
0303デフォルトの名無しさん2012/07/20(金) 14:57:51.74
まさか日本語の使い方についていちいち突っ込みくらうとは思わなかった
>>302
「も」は一般的に例に挙げられるポート未開放のクライアント同士の通信に対しての「も」だよ
0304デフォルトの名無しさん2012/07/20(金) 17:37:03.54
日本語のwikipediaじゃなくて英語のwikipediaを読むと良い。

> UDPホールパンチングの説明ってポートを開放していないクライアント同士の例ばっかりだけど、

でないことが分かる。
0305デフォルトの名無しさん2012/07/29(日) 23:11:40.41
無線APへ複数のAndroidを接続。Androidアプリ(Java)

IPMsgみたいなことをやりたくて、
1.A機種でServerSocketを待受て、AからUDP送信
2.B、C、D機種で受信
3.B、C、Dで受信したパケットオブジェクトから、Aのアドレスを取得して、
各機種からAのServerSocketめがけてTCP接続
 → エラー発生(することがある)

結果、
・B、C、Dすべてで、応答成功
・B、CはAへ応答を返せたのに、DでだけNo route to hostが出る
・Dは成功したが、B、CでNo ry〜

みたいな症状が出ています
タイミング的なもんか?とは思うんですが、なんかよくわからん

・No ry〜が出るときは、DからAへのpingコマンドでnetwork unreachable、
・AからDへpingすると、接続が回復する(ように見える。次回アプリ実行時にNo ry〜が出ない)
・Dからarp who-hasのブロードキャストが出ているが、Aで受信せず、B、Cでは受信できている

stackoverflow.comでAndroid + No route to hostって質問がいくつかあるけど、
結局解決してないように見える

なので、2chで解決するべ
0306デフォルトの名無しさん2012/07/31(火) 00:43:37.01
wireshark でみたら?
0307デフォルトの名無しさん2012/08/05(日) 11:23:49.49
ハッカー財閥 会長 トップは masa
ジャッチメント(規律委員)は全員しておくこと 1円でしておくこと
最新情報 大金をすべてしておくこと 
下に、無限超を数字にして、沢山書いて、数十枚、数百枚、数千万枚、数千京京京にして、銀行や松井証券など
に提出、FAXすればいいよ。上に京万枚と書いておくこと
最新情報 大金 
http://sky.geocities.jp/mannga9999/keizai2.txt
経営板で、アイスクリーム屋と、クリーニングの板見ればいい。
ほい。 
http://yuzuru.2ch.net/test/read.cgi/sakura/1158988790/
あとは、財閥の登記するだけ。kore
これノウハウ。教えていってたから、教えたおん。よ。
まーちゃんに、募金すること

突っ張りすぎて、中国の元が無価値になっぞ。実態のない経済は滅ぶ 今、元はマイナス。
http://blogs.yahoo.co.jp/mymymy90jp/2857425.html

これ改造して、大富豪ソフト作れない?金のレートが下がる時は、レートも下がるので、落ちる角度を計算してMその前にもどす機能があると、世界不況のときにも、できる。
http://www.vector.co.jp/soft/dl/win95/business/se312001.html
探せば、ソフトあるよ。瀬谷貴文が完成させている。
絶対命令
http://yuzuru.2ch.net/test/read.cgi/sakura/1158988790/
http://yuzuru.2ch.net/test/read.cgi/sakura/1158988790/
http://yuzuru.2ch.net/test/read.cgi/sakura/1158988790/
http://yuzuru.2ch.net/test/read.cgi/sakura/1158988790/
http://yuzuru.2ch.net/test/read.cgi/sakura/1158988790/
http://yuzuru.2ch.net/test/read.cgi/sakura/1158988790/
masaの分もやっておくこと 
depend on 銀行、matuisyouken monex
最後に、福祉財団、貧しい人を助ける財団をつくること
絶対命令 DC
0308デフォルトの名無しさん2012/08/05(日) 14:13:01.43
コピペマン参上!まで読んだ。
0309デフォルトの名無しさん2012/08/07(火) 11:42:50.66
sendtoとreceivetoでPC間でデータ受け渡ししてます(1回950バイト程度)
送信間隔は50msくらいなんですけどたまにパケットがロストします
特にsendtoはエラーを吐くわけでもなく普通に通信を続行してます
1時間に0から2回程度ロストする現象が起きます
このようなことはUDP通信では普通なのでしょうか?
なんとかロストしない方法があったら教えてください
0310デフォルトの名無しさん2012/08/07(火) 11:52:18.15
普通でしょう
ロストしたらもう一度送ればいいと思います
0311デフォルトの名無しさん2012/08/07(火) 12:17:29.49
IPv4 の仕様がよくわからんのですが
パケットヘッダのチェエクサムってのはルータを通るたびに変わるんですかい?
他にルータを経由してパケっどヘッダの中身で変わる可能性があるのは
Type of Service, TTL, Header Checksum, Option であってます?
0312デフォルトの名無しさん2012/08/07(火) 12:32:14.80
IPv4の仕様読めばすむ話だろ低脳
0313デフォルトの名無しさん2012/08/07(火) 12:50:16.33
>>309
UDPはロストするもんです嫌ならTCPを使いましょう。
1:1の通信でUDPを使うメリットは殆どないと思いますけど。
0314デフォルトの名無しさん2012/08/07(火) 12:58:17.65
>>313
ど素人がアドバイスするのは100年早いですよ。
0315デフォルトの名無しさん2012/08/07(火) 13:00:13.80
>>311
NATとかフラグメントとか考えれば
もっといろいろ書き変わるけど。
0316デフォルトの名無しさん2012/08/07(火) 13:00:39.69
あるだろ。バカ。
マルチキャスト/ブロードキャストよりユニキャストの方が圧倒的に
多く使われている。
0317デフォルトの名無しさん2012/08/07(火) 13:02:56.60
>>313
STREAMとDATAGRAMの差も理解できないバカですか?
0318デフォルトの名無しさん2012/08/07(火) 13:05:05.69
UDP(データグラムベース だけど、ロス有)
TCP(ストリームベース だけど、リトライ等である程度保障)
中間の SCTP ってのがあるけど… まだまだ普及してない印象

ある程度保障されたデータグラムのやり取り という用途は悩ましい
UDP でリトライ機構を考えるか, TCPでデータグラム単位に切り出す機構を考えるか
0319デフォルトの名無しさん2012/08/07(火) 13:08:55.69
>>309もド素人だから、
>>313の一行目はいいと思う。
2行目は間違い。
0320デフォルトの名無しさん2012/08/07(火) 13:10:46.78
使う必要ないところでUDP使って勝手に泥沼に嵌る奴が多すぎて笑える
0321デフォルトの名無しさん2012/08/07(火) 13:12:24.73
>>319
いいえ、50ms間隔で送信という要件が出てきた時点で
TCPが候補に挙がることはあり得ません。
1行目も誤りです。TCPの再送機構にだけ目が行き、
それによってどのようなパケットフローになるかがまったく
考慮されていません。
0322デフォルトの名無しさん2012/08/07(火) 13:14:44.08
>>315
逆に言うと
そのあたりがなければTOSとTTLくらいってことですか
ありがとうございました。
0323デフォルトの名無しさん2012/08/07(火) 13:17:53.52
無知どうしで罵りあいわろた
全く解決できてないしw
0324デフォルトの名無しさん2012/08/07(火) 13:18:27.96
>>321
PSHフラグあるがな。
0325デフォルトの名無しさん2012/08/07(火) 13:18:40.66
50msってどんだけ長い時間だか分かってる?www
0326デフォルトの名無しさん2012/08/07(火) 13:19:24.85
>>323
> なんとかロストしない方法があったら教えてください

そりゃこれが直結しない限り解決不能だし。
0327デフォルトの名無しさん2012/08/07(火) 13:26:23.22
50msを長いと思ってしまっている人がシステムを設計すると
すごい結果が待ってる気がするw
0328デフォルトの名無しさん2012/08/07(火) 13:26:27.33
直結でも同じなんだけどな
0329デフォルトの名無しさん2012/08/07(火) 13:29:51.94
どんな環境(OS、ネットワーク)なのか、50ms毎に送信するデータサイズが何も書かれてないのでアレだけど
50msがTCPじゃだめでUDPならOKという判断がどこから出てくるのかと

0330デフォルトの名無しさん2012/08/07(火) 13:31:20.43
しかも
> なんとかロストしない方法があったら教えてください
の要件で
03313092012/08/07(火) 13:31:25.94
書き間違えてすみませんが実際は20msごとに950バイトのデータを送信します
直結でやってますけど1時間に1回くらいでる頻度を
3時間に1回とかもっと頻度を減らすことは無理ですか?
0332デフォルトの名無しさん2012/08/07(火) 13:31:55.82
>>309
回線上ではロストしていないことが前提だけど
SO_RCVBUFとSO_SNDBUFを増やしてみては?
0333デフォルトの名無しさん2012/08/07(火) 13:32:30.84
> sendtoとreceivetoでPC間でデータ受け渡ししてます(1回950バイト程度)
データサイズがわからないメクラはレス禁止
0334デフォルトの名無しさん2012/08/07(火) 13:34:20.77
>>331
OS、ネットワークHW、ドライバを厳選すれば頻度を下げることは不可能ではない
0335デフォルトの名無しさん2012/08/07(火) 13:35:20.80
どこで消えてるか調べるのが先でないかい?
0336デフォルトの名無しさん2012/08/07(火) 13:41:01.26
1パケット/50msか 楽でいいなあ
0337デフォルトの名無しさん2012/08/07(火) 13:41:39.85
>>324
PSHの作用としては正しいけど、そういう使い方をするものじゃないよ。
03383092012/08/07(火) 13:42:36.82
色々ありがとう
使ったことないけどパケットキャプチャソフト使って監視して
ちゃんと受けてるのに消えてるならバッファ容量増やすってことですね
ちょっとやってみます
0339デフォルトの名無しさん2012/08/07(火) 13:44:01.94
いや、どんだけ頑張ってもロストするから
0340デフォルトの名無しさん2012/08/07(火) 13:44:45.46
>>338
netstat
0341デフォルトの名無しさん2012/08/07(火) 13:45:23.36
1パケット/50msでロストするのは明らかにバッファサイズのせいじゃないし
0342デフォルトの名無しさん2012/08/07(火) 13:45:51.47
>>331
以下のような、定遅延で高品質なシステムを設計すれば可能かもしれない
・リアルタイムOSを採用して、通信プロセスが途中でスイッチされない優先度を設定する
・コンピュータとネットワーク全体を電磁シールドで包み込む

それが無理なら、素直に>>313が言うようにTCPを採用しなさい
0343デフォルトの名無しさん2012/08/07(火) 13:46:05.06
専用バスで直結するとかでなければ
100%ロストしない環境は構築できないよ。
SATAやPCIEですらパケットロスがあるんだぜ?
0344デフォルトの名無しさん2012/08/07(火) 13:46:34.10
>>314
分かりました100年後にまたレスします
0345デフォルトの名無しさん2012/08/07(火) 13:48:18.45
>>341
50ms間隔で刈り取れることを前提にバッファサイズが950バイトに
なってるかもしれんw
0346デフォルトの名無しさん2012/08/07(火) 13:49:09.66
1kバイト/20msなら2,3個送って重複したの捨てればいいじゃん。
0347デフォルトの名無しさん2012/08/07(火) 13:50:59.88
>>331
20msごとに950バイトのデータを送信って何に使うのですか?
しかもロストしないのが前提って。
0348デフォルトの名無しさん2012/08/07(火) 13:53:07.95
ハード屋さんはUDP使いたがるけどソフト屋さんはTCPが好きw
0349デフォルトの名無しさん2012/08/07(火) 13:53:47.93
>>347
不明な用途では回答できないなら引っ込んでなよ。
0350デフォルトの名無しさん2012/08/07(火) 13:55:27.97
>>339
良いこと言った
0351デフォルトの名無しさん2012/08/07(火) 13:57:18.36
ロストを減らしたいってんでしょ
よく読まないメクラが多いな
0352デフォルトの名無しさん2012/08/07(火) 13:58:29.35
1時間に1つは駄目で3時間に1つなら良いとは・・・
0353デフォルトの名無しさん2012/08/07(火) 13:59:34.79
仕様に文句言ってしょうがない
0354デフォルトの名無しさん2012/08/07(火) 14:00:33.13
一番重要な事は伏せられたままである。
0355デフォルトの名無しさん2012/08/07(火) 14:05:04.32
>>321
1時間に1,2回再送するだけじゃないのよ?
03563422012/08/07(火) 14:07:31.25
>>321
ん?50msという定数を速い or 遅い、どちらで判断しているのかな?
こういった定数は前提環境によって基準が変わるから、まずそれを明確にしてほしいね

自分としては、>>309に「信頼性のある(=ロストしない)通信」という要件が出てきた時点で、
第一候補としてTCPを選ぶよ
どうしてもUDP上の独自プロトコルを設計する価値のある極めて限られたケースであれば、
ようやくUDP選択を検討し始める

>>344
馬鹿のつまらんヤジはスルー汁!!

0357デフォルトの名無しさん2012/08/07(火) 14:11:08.13
IP接続にリアルタイム性を求めても無理ですよ。
03583092012/08/07(火) 14:14:26.91
さっそくしらべてみました。
Microsoft Network Monitor3.4で受信側PCを監視したら
パケットが届いていませんでした
これは完全にロストってことでどうしようもないですか?
まだロスト率下げる手とかあるんでしょうか?
余りプログラムを触りたくないのでUDPでやりたいんです
0359デフォルトの名無しさん2012/08/07(火) 14:17:39.10
>>358
再送ロジックを実装汁よ。
0360デフォルトの名無しさん2012/08/07(火) 14:18:09.64
またまたまたまた、この手のレベルの意味の無い言い合いが始まっちゃった
0361デフォルトの名無しさん2012/08/07(火) 14:19:52.34
さっそく調べてみてこれだけの時間でロストが判明するなら、
1パケット/1時間より高頻度で発生してるって事じゃん。
0362デフォルトの名無しさん2012/08/07(火) 14:21:13.33
夏休みの学生の釣りでしょう
■ このスレッドは過去ログ倉庫に格納されています