ネットワークプログラミング相談室 Port29
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2012/10/31(水) 17:05:08.29Programming 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/
0221デフォルトの名無しさん
2013/06/15(土) 12:03:09.61はいはい御託は>189をWinsockで動かしてから言ってね♡
BSDソケットでは、ファイルディスクリプタ番号がFD_SETを超えることは無いから>189のコードで良い
0〜FD_SETまでの中に、必ずsocket()で作ったlisten中のソケットがある
Windsockでは違う
0222デフォルトの名無しさん
2013/06/15(土) 15:40:20.49> Windsock
ってのは, BSD ソケット API を Windows で実装したものって理解してたんだが違うのか?
つか,
> BSDソケットでは、ファイルディスクリプタ番号がFD_SETを超えることは無い
保証は何処にある?
0223デフォルトの名無しさん
2013/06/15(土) 15:58:13.05そんなもの使うのヤメレ
0224デフォルトの名無しさん
2013/06/15(土) 15:59:06.31しれっとウソつくなよ。>>221
0225デフォルトの名無しさん
2013/06/15(土) 16:46:01.43> > Windsock
> ってのは, BSD ソケット API を Windows で実装したものって理解してたんだが違うのか?
違う。似て非なるもの。意味不明の改変もある。
0226デフォルトの名無しさん
2013/06/15(土) 16:46:47.76>>221は馬鹿でよく分かってないので間違ったこと書くのは仕方ない。
0227デフォルトの名無しさん
2013/06/16(日) 12:00:56.260228デフォルトの名無しさん
2013/06/17(月) 12:46:20.671も2もどっちも嫌い
0229デフォルトの名無しさん
2013/06/23(日) 03:27:09.950230デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.ANWinsockを使っています。
一度通信を終えた後に再度通信を行おうとすると、sendをacceptが認識してくれません。
bind,listen関数は正常に動作しています。
クライアント側は完全に再起動、サーバーはwhileで使いまわしています。
原因に心当たりのある人教えてください
0231デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN認識するわけなかろう
0232230
2013/07/03(水) NY:AN:NY.AN済みません。仰る通りでした。
connectの戻り値は0でクライアント側は繋がっていると認識しているようです。
サーバー側を消すとエラーが出てくるので間違い無いと思います。
サーバー側はacceptを使っているスレッドを消していない時は2つ以上の接続であっても、上手く動作します。
クライアント側が再接続する場合もちゃんと動きます。
しかしスレッドを再起動した時には一つ目の接続から認識しません。
変数は毎回初期化しています。
0233デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN状況がよくわからんな
0234デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN0235デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.ANちゃんとListenしなおしてる?
0236デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.ANしっぱなしでいいだろ
いちいち再listenとかどこのBASICモドキだよ
0237デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.ANaccept の戻りのソケットは 接続発生毎に別物だから
変な使いまわしからすると 「接続は受けた けど クライアントとの通信が出来てない」 ってなことになる
0238230
2013/07/05(金) NY:AN:NY.AN考えてみればlistenしっぱなしで良かったです;
設定を弄る時に排他処理が必要かと思い、止めようとしてました
>>234,5
再lisetn,closeはしていると思います。
>>237
有用な情報ありがとうございます!
以下のような処理をしてるので大丈夫だとは思いますが、調べてみます。
listen(--);
-初期化処理-
while(1){
dstSocket[id] = accept(----);
if(-1 != dstSocket[id]){
--------
id = DecideNewId();
}
}
0239デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN全体に意味不明だから、もう少し勉強してから出直すほうがいいと思う
0240デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.ANそもそも肝心なところがどこか判ってるプログラマはむしろバグらない
0241デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.ANすべて駆逐したい
0242デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN0243デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN0244デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.ANネットワークを利用するアプリの質が極端に下がった
退化しまくり
0245デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN0246デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN結局ブラウザのバージョン依存で地獄とか同じ過ちを繰り返してるとしか
0247デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN0248デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN基本が一対一の通信なのに全体で同じデータを受け取れるのはむずかしくないですか?
0249デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN>>248
P2Pで全体ってどういう事を言ってるのかしらんが
全体で同じデータを受け取る必要はないだろ
0250デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN0251デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.ANでも企業面接でhttpの質問のみで落とされますた
0252デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN0253デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN0254デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN難しくは無い。
全体に同じデータを送る必要があるなら、全体に同じデータを送るだけ。
非常に単純な話だよ。
0255デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANhttp://ascii.jp/elem/000/000/712/712158/
0256デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANtcp6に採用されるような論文書かないと説得力全くない。
特殊な状況でしか効率良くないプロトコルじゃあ...
0257デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN多対多の通信を想定したプロトコルなんだから
0258デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN0259デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN0260デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN言ってることが明らかにおかしい
0261デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.AN無手順だから早いってだけでハマらんようにね
0262デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.AN0263デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.AN0264デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.ANクライアント-プライマリサーバからはHEARTBEAT
の送信・応答があるんだけど、セカンダリサーバの
ほうってプライマリからのハートビートインフォメーションに
乗せるんじゃなくてセカンダリサーバからHEARTBEAT
返すことってSOCKOPTのパラメタ設定とかで可能?
0265デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.AN複数セッション束ねるとか、方法はあるでしょ
0266デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.ANTCPはRTT依存するし、パケットロスに対する速度低下率が高すぎる。
0267デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.ANdynamic 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.ANascii.jp/elem/000/000/712/712158/
>金子:本当にTCPがボトルネックなんですよ。みなさんあまり気付いていないですけど、
>SilverBulletで動作させてみると楽勝で10倍くらいの通信速度が出るんですよ。ヘタすると100倍くらい出ますから。
0269デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.AN多対多だおω
0270デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.AN0271デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.AN組(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>パケットロスに対する速度低下
それは確かにそうだね
0274デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.ANふつう、全単射を「多対多」とは言わんわな。
0275デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.AN0276デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN0277デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN1対1のことだけ考えてる訳ではないよ
0278デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN全くその通りだが、それは論点ではない
0279デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN1対1の場合なら速度低下は起きない
と言っているということになる
それではいったい47氏の主張と
どこが違うと言えると言うのか
0280デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN0281デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.ANC++で通信ライブラリのようなものを作っております
よかったらお試しください
http://ichishino.nobody.jp/
0282デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN頑張ったところを教えて
0283デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN0284デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANこれは酷い
某技術書のサンプルコードとほとんど同じコードばかりじゃねえかw
0285デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANポート1つで通信するとした場合
ホスト側でソケット2つ用意してクライアント2人と繋げたいんですけど
どうしても片方のソケットにしか二人分のデータが飛んでこないんですけど
どうしたらいいですかね
0286デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN力が抜ける
0287デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0288デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0289デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0290デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0291デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0292デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN安心しろ
君がいることがレベルが高くない証明だ
0293デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0294デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0295デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANへえ、じゃ今はどんなのがはやりなの?こっちは田舎(神戸)だからよくわからないや
0296デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0297デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0298デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0299デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0300デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0301デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANネットワーク通信ですかね
サーバーアプリつくれば3000コネクションぐらいだったらいけると思います
0302デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0303デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0304デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANテストは10Kでやってるんですが、まあユーザープログラムの実装を入れたらもっと下だろうってことで
0305デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0306デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0307デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN役立つことは一切語る気はない、ただの宣伝行為という認識でいい?
0308285
2013/07/14(日) NY:AN:NY.ANマルチスレッドにしている部分のソースコードはらせて頂きました。
(現在は10個このスレッドを作成しています)
UDP/IPでの通信で同一ポートの使用が条件で
複数のクライアントと通信したいのですが
2箇所から通信してもらっても同じソケットにしかデータが着ません。
ここで質問なのですが
�@分けることは可能なのでしょうか?(ソケットひとつにつき一人にする)
�A分けない場合1つのソケットに複数のクライアントからデータが飛んできますが
その様な動きはサーバーとしていいのでしょうか?
0309デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN同じソケットを使え
エラー処理はちゃんとやれ
0310デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN不可能、いい
#ソースコードの断片から滲み出る初心者臭が酷いな
0311デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN0312285
2013/07/15(月) NY:AN:NY.AN>>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.AN0316デフォルトの名無しさん
2013/08/05(月) NY:AN:NY.ANたとえば、待ちうけや接続で ローカルポート9999 を使用している
プログラムを全員殺す
って fuser で一覧出して殺せばいいのか
ありがとう
0317デフォルトの名無しさん
2013/08/05(月) NY:AN:NY.AN0318デフォルトの名無しさん
2013/08/05(月) NY:AN:NY.AN0319デフォルトの名無しさん
2013/08/05(月) NY:AN:NY.ANどうやって使うの?
0320デフォルトの名無しさん
2013/08/05(月) NY:AN:NY.ANTCPの接続は<src IP, src port, dst IP, dst port>の四つ組で識別される。
0321デフォルトの名無しさん
2013/08/05(月) NY:AN:NY.AN複数のプログラムで使えるのは、src portの方?dst portの方?
そのとき、send()やrecv()ってどうやるの?
■ このスレッドは過去ログ倉庫に格納されています