[表示 : 全て 最新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/

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使用しているみたいなので、実装例見れますし。







[ 続きを読む ] / [ 携帯版 ]

前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