- 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/
- 196 名前:195 mailto:sage [2008/05/16(金) 01:04:52 ]
- >>195
自己レスです。 addr.sin_addr.S_un.S_addr = INADDR_LOOPBACK; // ★ループバックアドレスを設定 ↓ addr.sin_addr.S_un.S_addr = htonl(INADDR_LOOPBACK); ↓もしくは addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); でした。 また、addr.sin_portは使うときにはntols(addr.sin_port)としてやる必要がありました。
- 197 名前:デフォルトの名無しさん [2008/05/25(日) 08:38:08 ]
- こんにちは。
winsock、TCP/IP非同期の、ゲーム用のチャットを作ってます。 クライアントからサーバーにチャット文が届いたらfor文で回して 各クライアントのソケットにsendしているのですが、 (for(i=0,i<MAXCLIENT,i++) send(socket[i])みたいな感じです) この方法だとユーザーが少ないうちはいいのですが、 ユーザー全体数が150人くらいになると重くなります。 少しタイムラグがあって届くみたいな感じです。 どうすれば解決するでしょうか? よろしくお願いします。
- 198 名前:デフォルトの名無しさん [2008/05/25(日) 09:03:57 ]
- サーバーのCPUがマルチコアなら、マルチスレッド使うと早くなるよ
- 199 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 10:19:33 ]
- IPv6のサーバーサイドのプログラムが見つかりやせん
- 200 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 10:21:43 ]
- >>197
UDPにする
- 201 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 10:49:35 ]
- >>197
ノンブロッキングにする
- 202 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 13:25:46 ]
- その問題はノンブロックにして解決するの?
- 203 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 13:28:48 ]
- マルチキャスト
- 204 名前:デフォルトの名無しさん [2008/05/25(日) 14:40:10 ]
- 俺は2000クライアントにマルチキャストするプログラム書いたが
そんなに気になるラグはなかったぞ。多くても150msくらいの遅延しかない。 プログラム的に問題あるんじゃない?TCPでもsendにそんなに時間かかるって事はないと思うけど・・・ 送信するデータのサイズにもよるけどね。
- 205 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 14:51:07 ]
- 単純な foreach (clients) { client->send(data); } のとき
一匹でも激遅クライアントがいると そこでsendが糞詰まりを起こして全体が遅くなる
- 206 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 15:06:04 ]
- え、send()って、相手に到着しないと抜けないの?
- 207 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 15:56:12 ]
- tcp送信バッファが満杯になればblockする
- 208 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 20:13:36 ]
- なんでn回ユニキャストする発想になるのか。
- 209 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 20:29:59 ]
- そりゃmulticast/boardcastを知らないからだろjk
- 210 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 23:18:00 ]
- boardcastは俺も知らない。
- 211 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 00:33:39 ]
- TCPはmulticastできないみたいです。。。
for文じゃなくてマルチスレッドにするといいのかな? どうも同じような気がするのですが、一応やってみます。
- 212 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 02:11:21 ]
- くだんのスレがアフォなのはどうでもいいが、150ms遅延「しかない」
とかもう救いようがないな。
- 213 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 03:31:04 ]
- キューを実装して非同期sendすればプログラムが重くなるのは解消される
- 214 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 10:34:34 ]
- あれ、>>197には
>TCP/IP非同期 って書いてあるやん 150人に一斉同報するのってフツーに重いんじゃないの
- 215 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 10:38:07 ]
- ircdってどんな実装になってるんだろ
- 216 名前:デフォルトの名無しさん [2008/05/27(火) 02:32:22 ]
- >>212
環境を書いてないからなんとも言えんがな。
- 217 名前:デフォルトの名無しさん [2008/05/27(火) 02:57:49 ]
- 質問者が馬鹿だったのは、二チャンネルで質問したことだろな。
- 218 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 09:04:41 ]
- 197じゃないけど、似たようなプログラムでクライアントにダイヤルアップレベルの細い回線が混ざってて、
かつ数百キロバイトのデータが必要になる場合があるときは ・単一スレッドから非ブロッキングモードで送信 ・接続毎にキューを持ったスレッドを作成してブロッキングモードで送信 どちらがいいいのでしょうか? 接続クライアント数は10程度です。
- 219 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 09:33:28 ]
- 10程度だったらコードの見易さからいってスレッド作るのはアリかな
そうだとしてもブロッキングにはしないなあ、中断しにくいから
- 220 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 19:59:52 ]
- ネットワークとは直接関係ないのですが。。。
ネットゲームの延長の質問ということでご了承ください>< 直接アプリのアイコンをダブルクリックで起動じゃなくって、 ハンゲームとかのHPみたいにゲームスタートみたいなボタン(リンク)を クリックするとアプリが起動するのありますよね。 HPからユーザー側のアプリが起動できちゃうと悪さができちゃうからムリ みたいな事も聞いたことあるんだけど。。。 ああいうのってどうやってるのでしょうか?
- 221 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:26:27 ]
- >>220
ためしに登録してみたが・・・ ActiveXコントロールのインストールが必要ですって言われたぞ
- 222 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:27:07 ]
- 署名付きActiveXだとおもうが。
#厳密には署名がなくても不可能ではないけど、 #そのセキュリティを緩めるのは致命的な筈
- 223 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:27:45 ]
- ActiveXコントロールってなんですか?
- 224 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:28:47 ]
- >>223
ググレカス
- 225 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:34:28 ]
- 署名付きアプレットを認証局から証明書を発行してもらう必要があるみたいですね。
多分有料ですよね。 でも大体わかりました、ありがとうございます!
- 226 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:36:59 ]
- ハウス ググレカスー
- 227 名前:デフォルトの名無しさん [2008/05/29(木) 20:55:00 ]
- おいしそうなおやつがあったので、置いておきますね
東京藝術大学音楽学部 羽目鳥祭り開催中 school7.2ch.net/test/read.cgi/musicology/1211727581/
- 228 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 05:21:46 ]
- ActiveXコントロールは
ユーザーがインストールを許可する事でインストールされる。 インストールしなければ動かない。 実体はDLLかEXEなので起動されれば何でもできてしまう。 よくスパイウェアとして使われる。 よほどの馬鹿でなければ 信用あるサイト以外からはインストールしないので 作っても無駄
- 229 名前:デフォルトの名無しさん [2008/05/30(金) 05:27:24 ]
- ユーザは馬鹿だぜ?
- 230 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 08:14:56 ]
- ほいほいインストールすると思う。
署名のないActiveXを使ってる企業などのサイトで「警告が表示されますがOKを押してください」なんてわざわざ解説してたりするし。 「インストール手順を増やすうざいダイアログ」ぐらいにしか思ってないんじゃない。 あれを見るにつけ、日本って終わってると思う。
- 231 名前:デフォルトの名無しさん [2008/05/30(金) 19:26:57 ]
- 作り手もかなりあほだぜ
- 232 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 21:11:41 ]
- Vistaでは署名無しAXは起動できないんじゃなかったっけ
- 233 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 20:30:02 ]
- 絶対ほいほいインストールする
- 234 名前:デフォルトの名無しさん [2008/05/31(土) 23:41:10 ]
- とあるサイトからデータを自作したプログラムでダウンロードしているのですが、
ダウンロードに成功したり失敗したり 2分の1の確率で動いているのですが、 ダウンロードに成功しないのは なにが原因でしょうか?
- 235 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 23:49:58 ]
- 自作したプログラムなら、原因を調べられるだろう?
どこで何のエラーが返ってきてるとか
- 236 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 23:55:45 ]
- 翻訳:エスパー募集中
- 237 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:14:20 ]
- HRESULT h;
h = URLDownloadToFile( 0, http, file, 0, 0 ); switch(h){ case S_OK: printf( " success.\n" ); break; case E_OUTOFMEMORY: printf( " E_OUTOFMEMORY\n" ); break; case INET_E_DOWNLOAD_FAILURE: printf( " INET_E_DOWNLOAD_FAILURE\n" ); break; default: printf( " error?\n" ); break; } 上のようにしてやっているのですが、 h が default の値しか返さなくて何が原因なのかがわからないのです。
- 238 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:20:46 ]
- 値を表示してみるという思いつきができないのか
なんというゆとり
- 239 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:24:56 ]
- defaultを使わないでもっと絞ればいいだろ
- 240 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:31:06 ]
- >>238
戻り値は -2146697510 です 意味わかるんですか?
- 241 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:32:33 ]
- >>239
リファレンスには S_OK E_OUTOFMEMORY INET_E_DOWNLOAD_FAILURE の3つしか 特に戻り値として明記されていませんでしたので これ以外の戻り値は わかりません。
- 242 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:40:10 ]
- 仕様書か実装のバグだね
MSに抗議しないと
- 243 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:40:42 ]
- リファレンス外の戻り値を返すとかどんだけ糞なライブラリorリファレンスだよ
- 244 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:10:01 ]
- -2146697510 = S_OK + E_OUTOFMEMORY + INET_E_DOWNLOAD_FAILURE
- 245 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:12:17 ]
- >>244
おまえすげえなwww 3つの戻り値の和を返すというのはいったいどういうことを言いたいんだろうかこの関数は
- 246 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:20:04 ]
- >>244
1245206じゃハゲ テキトーなこと抜かしてるんじゃねーよボケ 死ね工作員
- 247 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:40:25 ]
- 一体何の工作だ
- 248 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:52:00 ]
- FACILITYの意味からして足すのはありえんと思うんだが
- 249 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:54:15 ]
- -2146697510 = S_OK | E_OUTOFMEMORY | INET_E_DOWNLOAD_FAILURE
- 250 名前:デフォルトの名無しさん [2008/06/01(日) 01:55:03 ]
- >>248
ビット和だろ常考
- 251 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:59:40 ]
- -2146697510を16進数に直すと0x800bfeda
8 は失敗をあらわす。 b は FACILITY_CERT で、電子証明書関連のエラーだとわかる。 feda は不明。 httpsで繋ごうとして何かがまずかったんだなとはわかるね。
- 252 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 02:09:45 ]
- winerror.hに詳しくなるスレはここですか
- 253 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 04:57:28 ]
- スタック破壊してんじゃネーノ
- 254 名前:デフォルトの名無しさん [2008/06/01(日) 05:07:10 ]
- ネットワーク接続を切る、接続するAPIってあるんでしょうか?
言語は C/C++ Windowsでお願いします
- 255 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 05:08:39 ]
- あるよ。
- 256 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 05:19:49 ]
- >>255
何でしょうか?
- 257 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 05:23:23 ]
- Winsock
- 258 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 05:49:25 ]
- すいません 間違えました
ネットワークでなく インターネットの接続です
- 259 名前:デフォルトの名無しさん [2008/06/01(日) 05:50:53 ]
- どう違うんだ
- 260 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 05:53:14 ]
- 稀にIPじゃない場合もあるか否か
- 261 名前:デフォルトの名無しさん [2008/06/01(日) 05:56:17 ]
- IPじゃないってドメインのことか?
ドメインならgethostbynameでIPに変換可能 あとは一緒
- 262 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 05:56:57 ]
- ネットワーク接続 WNetConnectionDialog関数を使ったら
ttp://sakuratan.ddo.jp/imgboard/img-box/img20080601055455.jpg のようなダイアログがでたのですが、これではないやつで インターネット接続関連のダイアログがでてくると幸いです
- 263 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 06:02:35 ]
- >>261
Internet Protocolを使ってないコンピュータネットワークもあるってこと。
- 264 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 06:30:21 ]
- connect() 関数じゃないですよ?
- 265 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 06:51:53 ]
- 物理的にネットワークアダプタを抜いた状態と同じ環境にしたいってことです
- 266 名前:デフォルトの名無しさん [2008/06/01(日) 07:41:40 ]
- >>263
あるわけないだろ。 ばか?
- 267 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 07:45:56 ]
- >>266
うせろキチガイ
- 268 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 07:47:43 ]
- >>266 が無知なのは分かったw
- 269 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 08:31:21 ]
- >>268が無知すぎる件
ある意味犯罪
- 270 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 09:43:55 ]
- >>269
アナタを・・・ telnetです・・・
- 271 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 15:34:01 ]
- >>266,269
AppleTalkとかIPXは?
- 272 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 15:34:40 ]
- >>265
Win32APIでネットワークアダプタを無効にするとか やり方知らんが多分できるとオモ
- 273 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 15:48:13 ]
- WindowsでSockRAW取れないのですが
どうしてですか?XP SP2です
- 274 名前:デフォルトの名無しさん [2008/06/01(日) 16:05:42 ]
- 覗くなということだ
- 275 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 18:13:05 ]
- >273
ググればすぐわかる。
- 276 名前:デフォルトの名無しさん [2008/06/01(日) 19:20:30 ]
- MMORPGのサーバとクライアントの同期化について知りたいのですが、
何か参考になるものとかありますか?
- 277 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 20:02:12 ]
- 韓国語を覚えたほうがいいかもね
- 278 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 23:23:04 ]
- >>277
理由は?
- 279 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 23:37:34 ]
- 市場の8割がチョン製クリゲ
- 280 名前:デフォルトの名無しさん [2008/06/02(月) 04:57:58 ]
- 日本ってなんで情報なかったりするんだろう(・ω・)
- 281 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 10:36:41 ]
- 日本のゲーム業界特有の情報閉鎖性もあるけど
オンラインゲームが流行ったときに不況で 誰も手を出さなかったとういのもあるかも そして>>279
- 282 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 13:03:35 ]
- 商売がヘタクソってのも多いと思うな>日本のメーカー
あからさまな出し惜しみとかして客に逃げられるパターンが多すぎる
- 283 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 13:30:29 ]
- 商売というか、小汚い金の稼ぎ方が日本人にあわないんだろうね
あっちの人たちは金が儲かれば形振りかまわないから成功はする 名声はないけど
- 284 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 14:20:06 ]
- うん,高度成長期の日本そっくり
- 285 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 14:23:01 ]
- パンヤもみんゴルのパクリといわれてるし、
その他もろもろパクリは多いよな。 そりゃ作るのは楽だよ 開発で使ってるソフトも平気で割れでやってそうw
- 286 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 16:21:36 ]
- >>285
ネットランナー・・・
- 287 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 21:38:57 ]
- WinSockでソケットのポート番号を
sockaddr_in add; int addlen =(int)sizeof(add); getpeername(Sock, (struct sockaddr *) &add, &addlen); char buf[50]; _itoa_s(add.sin_port,buf,(int)sizeof(buf),10); といった感じで取得はできましたが IPアドレスを取得するにはどうすればよいでしょうか?
- 288 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:20:02 ]
- getpeernameで返してもらった連中を
getnameinfoにでも突っ込めば。
- 289 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:35:15 ]
- sockaddr_in だと長さ足りなくないか
- 290 名前:デフォルトの名無しさん [2008/06/03(火) 22:54:40 ]
- 【エアー調査会社】HG嫁 住谷杏奈61【ハッカー妊婦】
human7.2ch.net/test/read.cgi/ms/1212471581/
- 291 名前:デフォルトの名無しさん [2008/06/04(水) 01:37:08 ]
- ネットプログラム初心者です。
ネットゲームのプログラミングが目的なのですが、 コネクション数は1〜200あたりで、OSがwindowsXPとした場合、 www.kt.rim.or.jp/~ksk/wskfaq-ja/articles/io-strategies.html を読む限り、WSAAsyncSelectかWSAEventSelectを使うのが良さそうですが どうなのでしょうか。
- 292 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 01:46:06 ]
- 「Winsock標準に準拠」にこだわるのでなければ(もはや意味なし)
IOCPにしとけ
- 293 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 01:48:59 ]
- 期待した動作をしなくてもくじけないココロがあるならなんとでもなるZE!
- 294 名前:デフォルトの名無しさん [2008/06/04(水) 01:57:35 ]
- まったく使ったことがないのでよくわかりませんが、
select 毎回の引数の処理が無駄 WSAAsyncSelect,WSAEventSelect メッセージの通知が遅い IOCP とにかく速い、プログラムは難しくなる で良いでしょうか? ROのエミュ鯖ではselectが使われてて、引数の処理が入ってたのは見たなぁ。
- 295 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 02:18:41 ]
- selectの64制限は確か#defineで回避出来たと記憶してるが
WSAEventSelectの64制限(WaitForの制限)は 複数のスレッドに64以下ずつわけるしかないんじゃなかったかな。
- 296 名前:デフォルトの名無しさん [2008/06/04(水) 02:29:14 ]
- 複数のスレッドになると難しそうですね。
マルチスレッドもネットプログラミングの経験もない自分的には ひとまずselectが良さそうな気がしてきました。 オープンソースのmmoが2つともselect使用しているみたいなので、実装例見れますし。
|

|