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

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

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

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辺り
足りなかったら適当に付け足してね

前スレ
ネットワークプログラミング相談室 Port28
http://toro.2ch.net/test/read.cgi/tech/1334736934/

関連スレ
ネットワークプログラミング雑談
http://toro.2ch.net/test/read.cgi/tech/1235800707/
0263デフォルトの名無しさん2013/07/12(金) NY:AN:NY.AN
出たなMulticastTCPお化け!
0264デフォルトの名無しさん2013/07/12(金) NY:AN:NY.AN
SCTPのマルチホーミング構成をとっているときに
クライアント-プライマリサーバからはHEARTBEAT
の送信・応答があるんだけど、セカンダリサーバの
ほうってプライマリからのハートビートインフォメーションに
乗せるんじゃなくてセカンダリサーバからHEARTBEAT
返すことってSOCKOPTのパラメタ設定とかで可能?
0265デフォルトの名無しさん2013/07/12(金) NY:AN:NY.AN
>>260
複数セッション束ねるとか、方法はあるでしょ
0266デフォルトの名無しさん2013/07/12(金) NY:AN:NY.AN
>>260
TCPはRTT依存するし、パケットロスに対する速度低下率が高すぎる。
0267デフォルトの名無しさん2013/07/12(金) NY:AN:NY.AN
>>264
dynamic multihomingが有効なら管理されてるpathの死活を把握してないといけないから、
セカンダリでもheartbeatによるpath管理が行われているはず。
フリーの実装ならRandall Stewartさんが関わっていたFreeBSDが信頼性あるんじゃないか。

>>266
http://image.itmedia.co.jp/l/im/news/articles/1206/12/l_moto_ssbp.jpg
みると、最初からwindow最大化したTCP4とRTT性能は大差ないように思う。
ack管理が閾値ベースである問題は解消してるけど、
そんなのは10年以上前からあるし。
0268デフォルトの名無しさん2013/07/12(金) NY:AN:NY.AN
無罪判決後、47氏の夢   2012年  『Winnyの金子氏が夢見る次世代高速ネットの世界』
ascii.jp/elem/000/000/712/712158/
>金子:本当にTCPがボトルネックなんですよ。みなさんあまり気付いていないですけど、
>SilverBulletで動作させてみると楽勝で10倍くらいの通信速度が出るんですよ。ヘタすると100倍くらい出ますから。
0269デフォルトの名無しさん2013/07/12(金) NY:AN:NY.AN
>>258
多対多だおω
0270デフォルトの名無しさん2013/07/12(金) NY:AN:NY.AN
>>258はTCP層だけしか見てないから仕方ない
0271デフォルトの名無しさん2013/07/12(金) NY:AN:NY.AN
TCPコネクションが <自IPアドレス, 自ポート番号, 他IPアドレス, 他ポート番号>という
組(tupple)でモデル化されることは、このスレ住人にとっては常識だと思う。

で、TCP層の利用者(user)であるアプリケーションの視点からは、
TCPコネクションは相手アプリケーションとの間の「1対1」関係に見えるし、同時に
TCPコネクションの集合を扱うTCP層の提供者(provider)であるTCPスタックの視点からは、
自集合と多集合との間の「多対多」に見える。
0272デフォルトの名無しさん2013/07/12(金) NY:AN:NY.AN
ベストエフォート側のネットワークで、
みんな帯域を譲りあいながら使ってるわけだからさ、
じゃないとslow-startとか必要ないわけよ。
0273デフォルトの名無しさん2013/07/12(金) NY:AN:NY.AN
>>266
>パケットロスに対する速度低下
それは確かにそうだね
0274デフォルトの名無しさん2013/07/12(金) NY:AN:NY.AN
>>271
ふつう、全単射を「多対多」とは言わんわな。
0275デフォルトの名無しさん2013/07/12(金) NY:AN:NY.AN
言わないな
0276デフォルトの名無しさん2013/07/13(土) NY:AN:NY.AN
TCPを多対多とか言う奴はUMLの多重度も正しく書けないだろ
0277デフォルトの名無しさん2013/07/13(土) NY:AN:NY.AN
輻輳を意識したプロトコルなんだから
1対1のことだけ考えてる訳ではないよ
0278デフォルトの名無しさん2013/07/13(土) NY:AN:NY.AN
>>277
全くその通りだが、それは論点ではない
0279デフォルトの名無しさん2013/07/13(土) NY:AN:NY.AN
速度低下の原因が輻輳であるならば
1対1の場合なら速度低下は起きない
と言っているということになる
それではいったい47氏の主張と
どこが違うと言えると言うのか
0280デフォルトの名無しさん2013/07/13(土) NY:AN:NY.AN
何が言いたいのか伝わって来ない
0281デフォルトの名無しさん2013/07/13(土) NY:AN:NY.AN
流れぶった切って宣伝です
C++で通信ライブラリのようなものを作っております
よかったらお試しください
http://ichishino.nobody.jp/
0282デフォルトの名無しさん2013/07/13(土) NY:AN:NY.AN
>281
頑張ったところを教えて
0283デフォルトの名無しさん2013/07/13(土) NY:AN:NY.AN
どっかのTCP/IPスタックがお馬鹿ってだけじゃあ
0284デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
>>281
これは酷い
某技術書のサンプルコードとほとんど同じコードばかりじゃねえかw
0285デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
WinSockで通信プログラム作ってるんですけど
ポート1つで通信するとした場合
ホスト側でソケット2つ用意してクライアント2人と繋げたいんですけど
どうしても片方のソケットにしか二人分のデータが飛んでこないんですけど
どうしたらいいですかね
0286デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
マヌケな発言はやめてくれ
力が抜ける
0287デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
まず服を脱ぎます
0288デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
このスレに来ていいレベルじゃないな
0289デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
いつからこのスレがレベルの高いスレだったと錯覚している?
0290デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
俺が来た時から
0291デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
誰も高いなんて言ってないんだが...
0292デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
>>289
安心しろ
君がいることがレベルが高くない証明だ
0293デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
俺とお前と
0294デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
田舎ではまだいるけど東京ではLooseSocksはほぼ絶滅したね。
0295デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
>>294
へえ、じゃ今はどんなのがはやりなの?こっちは田舎(神戸)だからよくわからないや
0296デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
いまはNoseFooksだな
0297デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
自分からドナドナされにいくのか?
0298デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
大五郎〜♪
0299デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
おれとおまえと
0300デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
だいごろお〜♪
0301デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
>>282
ネットワーク通信ですかね
サーバーアプリつくれば3000コネクションぐらいだったらいけると思います
0302デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
微妙だな。頑張ったと言うわりに10Kは特に意識してないってことか。
0303デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
この業界は何かと3Kと言われますしね
0304デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
>>302
テストは10Kでやってるんですが、まあユーザープログラムの実装を入れたらもっと下だろうってことで
0305デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
長時間の安定稼働がきついんですよね
0306デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
10Kコネクションで、最低でも一週間以上稼働し続けられるものを目指してはいます
0307デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
で、それを実現するために何苦労したとか、
役立つことは一切語る気はない、ただの宣伝行為という認識でいい?
03082852013/07/14(日) NY:AN:NY.AN
http://plsk.net/socket
マルチスレッドにしている部分のソースコードはらせて頂きました。
(現在は10個このスレッドを作成しています)
UDP/IPでの通信で同一ポートの使用が条件で
複数のクライアントと通信したいのですが
2箇所から通信してもらっても同じソケットにしかデータが着ません。
ここで質問なのですが
�@分けることは可能なのでしょうか?(ソケットひとつにつき一人にする)
�A分けない場合1つのソケットに複数のクライアントからデータが飛んできますが
 その様な動きはサーバーとしていいのでしょうか?
0309デフォルトの名無しさん2013/07/14(日) NY:AN:NY.AN
ソースは読んでないが、
同じソケットを使え
エラー処理はちゃんとやれ
0310デフォルトの名無しさん2013/07/15(月) NY:AN:NY.AN
>>308
不可能、いい

#ソースコードの断片から滲み出る初心者臭が酷いな
0311デフォルトの名無しさん2013/07/15(月) NY:AN:NY.AN
bindのエラーコードチェックすればすぐに分かることなのに
03122852013/07/15(月) NY:AN:NY.AN
>>309
>>311
 書き直した所bindで最初以外の9つのソケットからエラーが出てました
 エラー処理は大事ですねありがとうございました

>>310
 1つのソケットでデータを受信することにします
 ありがとうございます
 C言語初めてもう5年近くなるのにひどいありさまです 
0313デフォルトの名無しさん2013/07/15(月) NY:AN:NY.AN
ソース読んでなかった人間だけど、
ちゃんと文章で説明できてたからエスパー出来た。
それほど酷い有様でもない。
0314デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
特定のポートを使用しているプログラムを全員殺す
というプログラムはどうやって書けばいいかな
0315デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
全員って?例えば?
0316デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
>>315
たとえば、待ちうけや接続で ローカルポート9999 を使用している
プログラムを全員殺す

って fuser で一覧出して殺せばいいのか
ありがとう
0317デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
全員って、一つのポートを複数のプログラムで使えたっけか?
0318デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
使えますが?
0319デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
>>318
どうやって使うの?
0320デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
socket APIで。
TCPの接続は<src IP, src port, dst IP, dst port>の四つ組で識別される。
0321デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
>>320
複数のプログラムで使えるのは、src portの方?dst portの方?
そのとき、send()やrecv()ってどうやるの?
0322デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
特定のポートに接続してくる迷惑な相手鯖を全員殺す
というプログラムはどうやって書けばいいかな
(迷惑の基準は一秒間に一定回数回以上とかです)
ただフィルタするんじゃなくて相手側のプロセス(出来れば鯖ごと)殺したいです
0323デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
>>321
あまりにも初歩的だからマニュアル嫁。
0324デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
自分の管理下じゃない、相手プロセスを殺すのは無理

案1) IPメモって 上位のところに abuse 報告
案2) 接続ポートを特定化しないようにする細工がかけられればそれで自衛
0325デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
IP特定できてるならダミー鯖を用意してそっちに誘導かなぁ
0326デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
>>321
せっかく>>320がTCPコネクションの概念を明解に書いてくれているのだから、
その意味を(ネットの情報や書籍を参考にして)勉強してみたほうがいいと思うよ
03273212013/08/05(月) NY:AN:NY.AN
今までいくつもソケットを使うアプリを作ってきたけど、同じポートを使うという
発想がなかったから全く想像つかないんです。
同じポート番号でlistenするってことなの?
03283212013/08/05(月) NY:AN:NY.AN
あ、ひょっとして、connectで同じポート番号を使ったプロセスをkillしたいってことなのかな?
今使ってるポート番号じゃなくて。
0329デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
何寝言いってるんだか
0330デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
どんな糞アプリ作ってきたんだよ?
0331デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
ポート80を使用しているプログラムを全員殺す=世界中のWebサーバを殺すってことだろ。
0332デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
apache MPMを調べてみると良い。コードも読める。preforkが分かりやすい。
0333デフォルトの名無しさん2013/08/10(土) NY:AN:NY.AN
俺もソケットよくわかんね
教科書通りだとforkして平行宇宙せよってなってるし
実際試してもそれで同一ポートでの通信が出来ちゃうんだけど
四つ組じゃそれぞれのクライアントを識別するのはどうやってんだろうって
0334デフォルトの名無しさん2013/08/10(土) NY:AN:NY.AN
難しいことなど何もないよ
まずその教科書を投げ捨ててプログラミングしろ
0335デフォルトの名無しさん2013/08/10(土) NY:AN:NY.AN
シグナルとかが絡むとどうしたらいいかわからなくなる
例えばSIGPIPEが来たときreadしてるスレッドから来たreadの終了を表すものなのか
そのほかスレッドでの要因なのか判断する方法とかわからなすぎる
0336デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
>>335
もしよければ教えるけど
0337デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
WindowsSocketのGracefulShutdownを実装してSend側をshutdownしてから0が返るまでrecv呼ぼうとしたらそのままブロッキングしてcloseまで辿り着かないんですけど…
0338デフォルトの名無しさん2013/08/20(火) NY:AN:NY.AN
>>337
それほんとうにブロッキングしている?
ブロッキングと思い込んでるだけな気がする
0339デフォルトの名無しさん2013/09/02(月) 01:56:58.23
ASIOを使ってUDPでデータを送ってるんだが、遅延が酷い

すごく単純にするとこんな感じ
A→Bに一つの数値を送る
Bは他にいろいろやってるから処理は遅い

開始時のログ
A:1 2 3 4
B:1 2 3 4

しばらくすると、こうなる
A:123 124 125 126
B:98 99 100 101

時間が経てば経つほど、AとBの差が開いていく

内部バッファ?の古いパケットは捨てて、
最新のパケットだけ使う設定とかないのかな?
0340デフォルトの名無しさん2013/09/02(月) 02:33:02.02
>>339
録音再生なら、オーディオデバイスでのズレの蓄積が原因
0341デフォルトの名無しさん2013/09/02(月) 03:32:00.56
昔某メーカから調査頼まれたやつで、ドライバのクロック設定に
明らかなバグがあって、周波数が1%以上もズレてるのがあったよ
0342デフォルトの名無しさん2013/09/02(月) 03:39:03.02
そうじゃなくてもクロック偏差はどうしても存在するから
何らかの偏差吸収メカニズムがないと必ず破綻するよ
0343デフォルトの名無しさん2013/09/02(月) 07:25:01.12
ASIMOに運んでもらうか
0344デフォルトの名無しさん2013/09/02(月) 09:53:13.20
先行者で十分
0345デフォルトの名無しさん2013/09/17(火) 13:43:47.93
ユーザーの心拍数に同期するようにしたよ
0346デフォルトの名無しさん2013/09/17(火) 14:11:25.17
>>345
フィットネスの観点だと使い道あるぞw
0347デフォルトの名無しさん2013/09/17(火) 16:32:04.84
>>345
心拍数の測定に何使ってる?
0348デフォルトの名無しさん2013/09/17(火) 21:06:23.77
腕時計と人差し指・中指に決まってんだろ
0349デフォルトの名無しさん2013/09/17(火) 23:08:22.80
看護師が言ってたが、あまりあれは正確さが欠けるのでやりたくないらしい
0350デフォルトの名無しさん2013/09/18(水) 00:02:56.87
そういや最近bluetooth接続の心拍計があるな。ちょっと欲しい。けど一回しか使わなそう。
0351デフォルトの名無しさん2013/09/18(水) 02:25:41.95
SNMP TRAPあげてくれる体重計とか無いですかね。
いちいち倉庫から引っ張り出して乗るのは面倒なので椅子の下に常に敷いておくだけで40キロ以上の重量が加わったら時刻と重量を定期的に飛ばしてくれるだけでもだいぶ助かるんだけどなぁ。
0352デフォルトの名無しさん2013/09/18(水) 07:10:01.29
ときどき脈が飛ぶんだけど
こんな私でも通信出来ますか?
0353デフォルトの名無しさん2013/09/18(水) 07:48:21.31
めんどうだから
体重が2Kg以上増えたら電気ショックが流れるようにしたら
0354デフォルトの名無しさん2013/09/18(水) 14:45:09.07
> 体重が2Kg以上
この業界では2Kgなんぞは誤差のうちって奴がほとんどじゃないのか?
0355デフォルトの名無しさん2013/09/18(水) 22:32:36.64
>>354
一日で2Kg増えると考えると妥当と思うが
AIカーではシートが健康診断してくれるそうな(by TV)
0356デフォルトの名無しさん2013/09/18(水) 23:40:59.35
医師法違反ですね
0357デフォルトの名無しさん2013/09/19(木) 08:50:17.30
>>353
> 電気ショックが
この業界では電気ショックなんぞはご褒美のうちって奴がほとんどじゃないのか?
0358デフォルトの名無しさん2013/09/19(木) 15:50:42.93
こうしてショッカーが誕生した
0359デフォルトの名無しさん2013/09/19(木) 16:14:49.62
アイゴー
0360デフォルトの名無しさん2013/09/19(木) 16:18:53.73
ケー
0361デフォルトの名無しさん2013/09/20(金) 13:45:39.10
> 電気ショックなんぞはご褒美のうち
ラムちゃん (;´Д`)ハァハァ
0362デフォルトの名無しさん2013/09/21(土) 10:31:20.92
支援ツールktkr
http://hide.maruo.co.jp/software/netmon.html
0363デフォルトの名無しさん2013/09/21(土) 10:47:02.53
宣伝乙
■ このスレッドは過去ログ倉庫に格納されています