- 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/
- 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使用しているみたいなので、実装例見れますし。
- 297 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:45:00 ]
- pthread_mutexって10万個作って使っても
問題ない?
- 298 名前:デフォルトの名無しさん [2008/06/04(水) 20:59:21 ]
- >>297氏とは違うのですが、ミューテクスとセマフォを分かりやすく説明できる方いないでしょうか?
ググッてみたけど、どこも似たような分かりにくい説明が多いです。。
- 299 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:22:02 ]
- ミューテクスは複数のスレッドがあった場合、順番に処理するのに対して、
セマフォを複数のスレッドが同時にアクセス可と言う考え方でいいのでしょうか?
- 300 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:06:23 ]
- セマフォは5個の資源を10人で使うというような考え方。
listenの引数みたいなというか
- 301 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:14:35 ]
- >>300
係数1のセマフォならいっしょじゃねーか 嘘教えるな
- 302 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:17:22 ]
- >>298
ミューテックスは、同時にひとつのスレッドしかアクセスできない。 1人用のイスみたいなもの。 早いもの勝ちで1人だけが獲得できる。 残念ながら座れなかった人は、イスが空くまで待つ。 イスが空いたら、待ってましたとばかりに奪い合って、勝った人1人だけがイスに座れる。 負けた人は、またイスが空くまで待つ。 セマフォは、同時にアクセスできるスレッドの数を好きに指定できる。 3人まで座れるソファーとか、そういうの。 4人目が来たら、誰かがどくまで待つ。 1にすれば、ミューテックスとほぼ同じ。
- 303 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:25:50 ]
- >>301
だからそのものズバリだろw 教科書でミューテックス=二進セマフォという表記も使われる。
- 304 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:50:39 ]
- WinやRecursiveにしたときのpthreadは、Mutexは同じスレッドならば何度でも取得できるところが一番違う。
スレッドごとの排他制御にMutex、複数の資源管理にセマフォ、単一の資源管理ならどっちでもいい。
- 305 名前:298 mailto:sage [2008/06/04(水) 22:53:48 ]
- >>299-303
>>302さんの説明分かりやすかったです。ありがとうございました。 ググッても、どこも排他的とかいまいち理解しづらいですよね。。
- 306 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 23:25:22 ]
- なんというスレ違い
- 307 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 12:27:33 ]
- C++使いなのですが、socketの実装未経験です、
車輪の再発明はしたくないのでlinuxのsocketライブラリを探しています CommonC++(commoncpp)というのを見つけたのですが www.sunsite.ualberta.ca/Documentation/Gnu/CommonC++-1.0.2/html/index.html ソースコードを見てると使いやすそうなんですが、他にもオマイラお勧めの、良いライブラリとか あったら教えてホスイのですが boostにもsocketのライブラリがあるっぽいんだけど・・・・こっちの方が有名なのかな?
- 308 名前:デフォルトの名無しさん [2008/06/08(日) 12:56:46 ]
- boostのがおすすめ
- 309 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:23:14 ]
- オマイラだと?何だその態度は
- 310 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:28:50 ]
- >>307
一度くらいは自分で実装するべきだ。その上で便利なライブラリを探すんだ。 車輪の再発明はしたくないって便利な言い訳だね。
- 311 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:41:01 ]
- 別に使えるものは使えばいいんじゃねえの
いちいちカーネルやコンパイラから自分で書き起こしたりはしないだろ
- 312 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 21:49:25 ]
- >>307どえす
VS2005とgcc-4.1.2-33に、boost-1_35をスコーンとインスコして asioをやりまくっているんだが VS2005は、無問題、gccでコンパイルする場合 いちいちコンパイル毎、変数を設定するのがマンドクサイので .bash_profileに CPLUS_INCLUDE_PATH=/usr/local/include/boost-1_35; export CPLUS_INCLUDE_PATH LD_LIBRARY_PATH=/usr/local/lib; export LD_LIBRARY_PATH 追加設定して $ g++ -pthread -lboost_system-gcc41-mt sample.cpp こんな感じでコンパイルしてて、今んとこ無問題なんだが、どうよモマイラ、 他にいい方法があったら聞いてやるが
- 313 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:12:11 ]
- Makefile
- 314 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:02:18 ]
- >>312
聞いてくれなくてもいいが
- 315 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:13:36 ]
- boostの非同期ライブラリおすすめ>>307
- 316 名前:デフォルトの名無しさん [2008/06/09(月) 00:07:43 ]
- >>315
boost::asioも非同期ライブラリ持ってるんじゃないの?
- 317 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 10:02:28 ]
- ACEだな、やっぱでかいし
- 318 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:12:11 ]
- ごめん。
asioのことを言ったw>>315
- 319 名前:デフォルトの名無しさん [2008/06/10(火) 21:12:45 ]
- ネットワークプログラミングの利点って何?
- 320 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 21:32:02 ]
- ネットワーク通信ができること。
- 321 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 03:25:33 ]
- 宿題スレに質問投げておくと勝手にだれかが作ってくれる
これがネットワークプログラ
- 322 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 12:27:03 ]
- >>321
小人さんは間違いが多いのが欠点だ。
- 323 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 22:24:38 ]
- >>312どえす、おいモマイラ一週間ぶりに俺様が来ましたよっと>>310の言う通り、漏れはソケット初心者なので、動作を理解するうえで、薄いラッパークラス作っている
近い将来、サーバー側、クライアント側で行う動作を基底クラスで実装して、それぞれのクラスを派生させようと思うが、サーバー側とクライアント側で 何が共通手順なのか、今はまだよく分からないので、とりあえず前に進めるためおこなっていおる どうよこんな感じで class Socket { int fd1, fd2; struct sockaddr_in saddr; struct sockaddr_in caddr; int len; public: Socket() : fd1(0), fd2(0), len(0) {} // コンストラクタ ~Socket(){} // デスクトラクタ void MakeSocket(); // ソケット生成 void InitSocket( sockaddr_in saddr) ; // ソケット初期化 void NameOfTheSocket( sockaddr_in saddr );// ソケットに名前を代入 void BindSocket( sockaddr_in saddr ); // ネームバインド void ListenSock( int fd1 ); // リッスン void AcceptSocket(); // アスペクト void CloseSocket(); // ソケットクローズ };
- 324 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 22:24:59 ]
- 続き
void Socket::MakeSocket() { if ((fd1 = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket"); exit(1); } } void Socket::InitSocket( sockaddr_in saddr ) { memset((char *)&saddr, 0, sizeof(saddr)); } void Socket::NameOfTheSocket( sockaddr_in saddr ) { saddr.sin_family = AF_INET; saddr.sin_addr.s_addr = INADDR_ANY; saddr.sin_port = htons(PORT); } void Socket::BindSocket( sockaddr_in saddr ) { if (bind(fd1, (struct sockaddr *)&saddr, sizeof(saddr)) < 0){ perror("bind"); exit(1); } } void Socket::ListenSock( int fd1 ) { if ( listen(fd1, 1) < 0) { perror("listen"); exit(1); } }
- 325 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 06:51:37 ]
- オブジェクト試行ですか?
- 326 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 07:58:40 ]
- sockの関数と1対1に対応するメソッドを作ってるうち恩恵を受けにくい。一連の決まった操作をひとつのメソッドにまとめてしまおう。
sockaddrはラップして、アドレスのクラスを作ってしまう。簡単にアドレスを設定できるようにするといい。 あと、言葉遣い直せ
- 327 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 08:00:05 ]
- JavaとかRubyとかPythonとかの
ソケットクラスの構成をみれば〜?
- 328 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 08:27:18 ]
- >>326
君はまずその変な日本語を直さないとな 他人の言葉遣いを指摘してる場合じゃないぞ
- 329 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 09:27:20 ]
- さて、些細な顰蹙をかっているようだが、2ちゃんねるクオリティーということで、まぁ許してちょんまげ
こんな感じで、完成形に徐々に近づきつつあると思うが、どうよ class Socket { struct sockaddr_in saddr; struct sockaddr_in caddr; public: Socket(){} // コンストラクタ ~Socket(){} // デスクトラクタ void SetAddresSocket( sockaddr_in saddr, unsigned short sock_family, unsigned short sock_port, int sock_addr ); // sockaddrラッパークラス int DescriptSocket(); // ソケットを作り、成功したらソケットディスクリプタを返す };
- 330 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 09:27:56 ]
- void Socket::SetAddresSocket( sockaddr_in saddr, unsigned short sock_family, unsigned short sock_port, int sock_addr )
{ saddr.sin_family = sock_family; saddr.sin_addr.s_addr = sock_port; saddr.sin_port = htons( sock_addr ); } int Socket::DescriptSocket() { int fd1, fd2; size_t len; if ((fd1 = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket"); exit(1); } memset((char *)&saddr, 0, sizeof(saddr)); // 初期化 // バインド if (bind(fd1, (struct sockaddr *)&saddr, sizeof(saddr)) < 0){ perror("bind"); exit(1); } if ( listen(fd1, 1) < 0) { perror("listen"); exit(1); } len = sizeof(caddr); if ((fd2 = accept(fd1, (struct sockaddr *)&caddr, &len)) < 0) { perror("accept"); exit(1); } close(fd1); return fd2; }
- 331 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 09:34:50 ]
- しかしなんだね、g++ってVC8とは若干違うよね
accept()関数の第三引数の accept(fd1, (struct sockaddr *)&caddr, &len)) lenだが、VC8ならintでも無問題なのだけど、g++はsize_tじゃないと嫌だと 怒ったりとかと少し戸惑う、>>330でした
|

|