- 1 名前:ftp-data mailto:sage [2007/08/07(火) 01:47:35 ]
- 主にソケットに関しての質疑応答スレッドです。
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辺り 足りなかったら適当に付け足してね 前スレ ネットワークプログラミング相談室 Port19 pc10.2ch.net/test/read.cgi/tech/1159692799/ 関連スレ Java ネットワークプログラミング 【教えて!】 pc11.2ch.net/test/read.cgi/tech/1086238859/
- 610 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 18:53:38 ]
- OK。落ち着け
ネットワークプログラミングにおいて 「クライアント」は「接続しに行く側」 「サーバ」は「接続を受け付ける側」 だから
- 611 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:02:51 ]
- >>609
あなたのサーバとクライアントの定義をききたいよ
- 612 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 02:26:33 ]
- UDP は受け取る側がクライアント、というプロトコルも多いな・・
RTP とか
- 613 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 08:29:38 ]
- >>611
俺は>>609ではないが、 ・LAN内のPC → クライアント ・WAN側のPC → サーバー だったりしてな。
- 614 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 16:44:41 ]
- >>610,611,613
自分の解釈では ・サーバーはサービスを提供する側 ・クライアントはサービスを享受する側 ですね。 ただ元の質問は、 「サーバーのポートが解放されていてクライアントがポート0の場合、何かできないことがあるのか?」 というものなので、ここではこの文脈にそって言葉を使っています。
- 615 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 00:42:20 ]
- 元の質問ってそんなのだっけか?
というかクライアントなのに自分でポートを開けておく必要なんて無いよな サービスを提供するためにポートを開けておくわけだし
- 616 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 23:39:10 ]
- クライアントからport80で接続されているときに
そのconnectionを使って逆にサーバー側から クライアントに突撃する方法を聞いてるんじゃない?
- 617 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 22:15:21 ]
- たんにP2Pの存在をしらないんじゃ?
- 618 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 04:14:29 ]
- sshでトンネル作ってport forwardingしたらなんでもやり放題だお
- 619 名前:デフォルトの名無しさん [2007/12/19(水) 10:14:58 ]
- netstatなんかで見れるような ソケットの
現在のステータス(ESTABLISHEDとかTIME_WAITとか) って、getsockoptでどうやって取得するの?
- 620 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 14:58:25 ]
- >>619
connectしてるかどうかくらいはわかるけど、普通見れない。 netstatは(setuidされていて)kmem見てたり、/proc/net/ 見てたりしてるだけ。
- 621 名前:デフォルトの名無しさん [2007/12/19(水) 22:00:37 ]
- epollやkqueueはなぜ高速なのか、レガシなAPIとの比較で3行で教えてください。
特にepollに興味があります。
- 622 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 22:58:25 ]
- /dev/poll を忘れんなよ
- 623 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 23:21:11 ]
- 要するに状態を監視したいソケット連中ってのは、selectの呼び出し毎に
大きくかわったりはしない。なら、引数でソケット全部を毎回渡すよりも、 ハンドル経由で差分更新したほうが、処理は高速になるって話。
- 624 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 23:23:20 ]
- 計算量で語ってほしい
- 625 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 00:15:53 ]
- selectなら o(n)
epolなら o(1) ってことだろおうぉあ
- 626 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 00:22:49 ]
- 実際は、イベント発生頻度Mにも比例するから、
selectはO(N*M)になる、のかなー? epoll系はO(M)で。
- 627 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 00:23:27 ]
- >>623
621とは別人です。 10行になっても良いので馬鹿にもわかるようにお願いしますm(_ _)m 「大きくかわる(大きい?小さい?)」「ハンドル経由(ハンドル?)」がわかりません
- 628 名前:デフォルトの名無しさん [2007/12/20(木) 00:27:48 ]
- klabという会社の勉強会資料が読みやすかったような記憶。
/dev/pollってなんだ?
- 629 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 00:29:30 ]
- そらりすのやつじゃねーの。/dev/poll。
だいたいこのペーパー読めばいいんでね。まあ、英語読めないオチだろうけど。 people.freebsd.org/~jlemon/papers/kqueue.pdf
- 630 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 01:27:08 ]
- >>626
それMは定数扱いでいいですやん
- 631 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 02:23:52 ]
- 京急の特急に乗ればいいことが解った
- 632 名前:デフォルトの名無しさん [2007/12/22(土) 23:54:42 ]
- winsock2.org/samples/Ch09/GETHTTP2/gethttp2.cpp
ローカルホスト上のデータを最大で16000byteずつしか読み取れないんですが、これはなぜですかね?
- 633 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 00:07:42 ]
- >>632
たぶんTransfer-Encoding: chunked
- 634 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 00:23:33 ]
- HTTPじゃないから、chunkedは関係ない。
どっちかってーと、MTUの話。 というか、ローカルだろうと、TCP経由で 一度に全部読めると思うのが間違い。
- 635 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 00:26:04 ]
- なんだそうか
- 636 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 04:16:30 ]
- 頭痛いわ
- 637 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 04:25:19 ]
- つ バファリン
- 638 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 11:33:52 ]
- 股間が疼くわ
- 639 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 11:40:07 ]
- つ クラビット
- 640 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 20:44:13 ]
- Winsockを使い
ttp://localhost/1.html ttp://localhost/2.html 一つのアプリケーションが この二つのURLのダウンロードを並列に処理する事は可能ですか?
- 641 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 21:03:34 ]
- 可能です
マルチスレッドとかノンブロッキングとかIOCPとか調べるよろし
- 642 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 21:46:05 ]
- ありがとうございます。
- 643 名前:デフォルトの名無しさん [2007/12/24(月) 00:35:48 ]
- 非同期モードと非ブロッキングモードはどう違うのですか?
- 644 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 00:51:00 ]
- まずお前がその二つをどう理解しているかを述べよ
- 645 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 01:17:50 ]
- たとえば読み込み指令を出して、そのときには読むべきデータが無かったとしたら、
ノンブロッキングはすぐに諦めて帰ってくる。 非同期は何かが読めるまでバックグランドでがんばってくれる みたいな違い。
- 646 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 01:37:02 ]
- その理解でいいんじゃない? 順序としては
ブロッキング → ノンブロッキング → 非同期I/O と進んできたんだけど これ以上詳しく知りたければ実装を調べるしかないのではないかと
- 647 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 07:03:17 ]
- リクエストとリプライが同時でない=同期的でないのが非同期。
リクエストを出した後、リプライは後から別の手段で得る。 一対一に対応してないこともある。リプライが続々とやってくるなど。 ノンブロッキングは同期的だけど、データ取得を諦めることがある。 その時でも「データねーよ」とのリプライが同期的に得られる。 非同期はそうではない。
- 648 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 11:57:28 ]
- 使い分けで
同期-ブロッキング 多重化-ノンブロッキング(select or poll) 非同期-シグナル駆動I/O or 非同期I/O とあったのですが、 これで合っていますでしょうか?
- 649 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 12:05:17 ]
- >>648
> 非同期-シグナル駆動I/O or 非同期I/O も多重化出来るだろ。
- 650 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 15:49:15 ]
- たじゅーか!
と書くとほほえましいな
- 651 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 20:32:06 ]
- Linuxでクライアント書いてるんだけど
closeが完全に終わるまで待つにはどうしたらいいかわかんないので 誰か教えれ
- 652 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 20:45:11 ]
- shutdownで半クローズ → 相手にEOFが届く → 相手がソケットを閉じる → EOFが来る → こっちも閉じる
とかじゃだめなん?
- 653 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 21:30:05 ]
- >>652
だめじゃない!だめじゃないぞ!いける!
- 654 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 22:43:09 ]
- それはさ、こっちの最後の送信結果が、closeしちゃうと判らなくなるからで、
別にこっちが送信してないなら勝手にcloseして終わりにしたらいいじゃん。
- 655 名前:デフォルトの名無しさん [2007/12/25(火) 14:18:46 ]
- 非同期モード、非同期イベントを利用して
localhost上のバイナリファイルをダウンロードしようとしているのですが、 ブロッキングを起こしてしまいます。 非同期モードを解説したサイト等ありましたら、 教えてほしいです。
- 656 名前:デフォルトの名無しさん [2007/12/25(火) 14:54:45 ]
- DNA.TV⇒デジネイション.テレビジョン⇒ステージ.オン.エアー <IE7テストバージョン>
dnatv.atspace.com/?S&1912501&166?S&1966612&280?S&1928546&28@HiSpeedVisionStageOnAir
- 657 名前:デフォルトの名無しさん [2007/12/25(火) 18:23:18 ]
- WSAAsyncSelectでググったらいくらでも出てくるじゃねぇか
- 658 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 18:24:13 BE:295671825-2BP(312)]
- ここは書き込めるようだな
- 659 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 18:26:49 ]
- というか、その「ブロックを起こす」コードを晒してみたら?
- 660 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 19:31:54 ]
- 自己解決しました。
ありがとうございます!!
- 661 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 19:45:33 ]
- どういたしまして
- 662 名前:デフォルトの名無しさん [2007/12/25(火) 23:27:54 ]
- ARCNETは、スレ違いですか?
- 663 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 00:02:00 ]
- いいや、違わない
なんなら422でもCANでも構わない
- 664 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 16:02:49 ]
- winsock2.org/samples/Ch04/ChekMail.c
このような非同期通知を利用して、アプリケーションを作成しているのですが、 こちらからサーバにデータをPOSTする処理をfor文を使い連続でしたいのですが、 どのようにしたらできますでしょうか?
- 665 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 16:47:16 ]
- >>664
>こちらからサーバにデータをPOSTする処理をfor文を使い連続でしたいのですが、 できません。それが非同期処理。 キューなりリストにPOSTするデータを入れておいて、 FD_WRITEが取れたら書き込む。エラー処理も忘れずに。 どうしてもforでまわしたいなら、 スレッド分けて、WSAGETSELECTEVENTするスレッドで、FD_WRITEがきたら、 イベントをセットし、POSTするスレッドのfor内でそのイベントをWaitForSingleObjectするとか。 でも、それなら最初から同期処理で良い。
- 666 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:10:08 ]
- とりあえず、-1がもどってくるまでは無条件に書き込めばいいんでないの。
- 667 名前:デフォルトの名無しさん [2007/12/31(月) 15:59:49 ]
- 教えてください。
サーバソケットでTCPの10〜100バイトの可変長データを受信する際、 そのデータのレングスが先頭2バイトにある識別子で判断できる場合って ・まず先頭2バイトをrecvする。 ・識別子を判断して残りのバイト数をrecvする というのが一般的なのでしょうか? recvの第3引数に1500バイトくらいの十分余裕な値を指定すると 勝手に1データの終わりを検出してリターンしてくれるものなのでしょうか? 要は連続してデータが飛んでくる場合に 1データの区切りをrecv1回で済むのか、2回に分けないといけないのかが 知りたいです。 Linux環境です。
- 668 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 16:42:47 ]
- 読みたいなら読めばいい。場合によっては、区切りを検出してくれることもある。
ただ、「1500バイトrecvをかけて、1400バイト読んだ。ヘッダのレングスは500バイトだったよ〜」 ってときもあるから、500処理したあとに次のヘッダ処置にいかないとダメだし、 その逆の、「ヘッダは500バイトあるっていったけど、recvで戻ってきたのは200バイトだった」 って言う場合の処置もいる。
- 669 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 23:01:45 ]
- >>668
レスどうもです。 頭悪くていまいち理解できてないんですが、受信バッファに +---------- |ABCD・・・・ +---------- と入っていて A=50バイト B=60バイト C=70バイト D=80バイト だった場合、1500バイトでrecvかけたら ABCDいっぺんに読めてしまうってことですよね?
- 670 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 23:23:50 ]
- >>669
>>668じゃないけど、recvの第三引数に1500を指定するって事だよね? それならABCD全部読めるかもしれないし、読めないかもしれない。 もしかしたら、Aの最初の5バイトしか読まないで返ってくるかもしれない。 完全に運の世界。 まあ受信バッファに本当にABCDが全部入ってるんなら全部1度に読めるけど、 プログラム側から受信バッファの内容を知る事はできないからやっぱり運。 だから普通は指定したバイト数読むまでrecvを何回も呼んできちんと読むような関数を作る。
- 671 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 23:30:50 ]
- >>669
面倒だから、fdopenしてストリーム入力使いなよ。
- 672 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 16:39:53 ]
- >>670
レスありがとうございます。 recvするたびにA、B・・・とデータの区切りごとにリターンしてくれる ということでは無いんですね(そう都合よくはいかないか・・・)。 >>671 別の方法もあるということですか。 勉強してみます。ありがとうございました。
- 673 名前:デフォルトの名無しさん [2008/01/03(木) 17:15:51 ]
- WindowsでIPヘルパを使っています。
複数のネットワークカードが刺さっている場合の取得順序について。 GetInterfaceInfo()での取得順序は何に依存するのでしょうか? バスの位置でしょうか?
- 674 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 18:45:06 ]
- select をつかって TCP 23ポートを開いてATコマンドを処理するプログラムを書こうとしている初心者ですが
select の動作がいまいち理解できなくて難儀しています。 サーバープログラムの場合 listen したファイルディスクリプタを readfds 集合に入れて select を実行した場合、 select が戻った時に readfds に listen 用 FD があると、ちょうどクライアント側が connect したタイミングなので その場合accept してあげれば良い。のは大体分かりました。 で accept した FD を即座に select の readfds集合 と writefds集合 にいれているのですが、この場合 select が戻った時に readfds に accept した FD がある場合は、受信準備OKな状態で、この時に read すれば 受信データを得ることができて、 writefds に accept した FD がある場合は、送信準備ができた状態で、 write してあげればデータを送信ができるんでしょうか?この時、実際受信したデータがないか、送信するデータがな い場合もあると思うのですが、そういう場合は速やかに再度 select すれば問題ないですよね。。 このように理解しているのですが、何分うまくいかないのでどこか間違ってそうなのです。
- 675 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 19:11:44 ]
- selectのwritefdsというのは、「現在送信バッファに追記出来る状態ですよ」って
のに近い。(まあ、connectの結果を見るのにも使えるけど。) 普通は、readfdsだけ仕掛けておいて、戻ってきたらrecv発行->受信処理。 なにか書きたくなったら、すぐsend。-1(EWOULDBLOCK)が戻ってきたら、 続きを送信するためにwritefdを仕掛けて待機。writefdが立てば続きを送信。
- 676 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 19:48:51 ]
- >>674
受信準備OKなものは、受信データがないってことはあんまりないと思うけど。 送信準備OKなものは、送信するものがなければ writefds から外すべき。 送信可能(送信バッファに空きがある)である限り、常に反応し続ける(selectが即座に返る)。
- 677 名前:674 mailto:sage [2008/01/08(火) 20:58:49 ]
- なるほどサンクスです。write は失敗した時だけ writefds にいれとけばいいのですね。
ずっと select が返る状態だと、使う意味がなくなりますもんね。。
- 678 名前:674 mailto:sage [2008/01/09(水) 18:52:35 ]
- 連投すいません。
考えたのですが write( send ) はやりたい時に行い、失敗したら送れな かったデータをバッファに置き次回 select で writefds をセットする。。。 。とすると、write を行ったのが select を行っているスレッドであれば、se lect が戻った後に write なのでいいのですが、別スレッドで write すると select しているスレッドは受信データがない限り戻らないので、即座に続 き送信できませんよね。 select はタイムアウト設定できるようなので、タイムアウト1秒として、 送信するデータがあれば writefds をセットし select で戻れば送信として は駄目なんでしょうか、、そういうソース見たことありませんが。。
- 679 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 19:06:45 ]
- select使ってるのに、何でスレッドが分かれてるの?
まー、IPC用にソケット1本確保して、同時にselectで見張る手もあるけど、 writeが競合するとか嫌な事態になりそうだなー。
- 680 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 19:59:29 ]
- 適当なシグナルを発生させてやればEINTRで帰ってくるんじゃないかね
だめだったら679のようにselect起こす用のsocketpairかpipeかなんかを作って一緒に待たせておけばいい writeはまぁmutexするしかないだろ
- 681 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 22:29:12 ]
- おお、シグナルやパイプを使えばうまくいきそうですね。select使ったコードを探していた時に見たことあります。
いろいろ教えてもらったいまなら、理解できそうです。。 いろいろ、ありがとうございました。
- 682 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 14:54:36 ]
- WinsockでWSAAsyncGetHostByName以外に非同期で
名前解決をする方法があれば教えて下さい。 コンソコールアプリからだと使いにくいです。。。
- 683 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 15:53:40 ]
- >>674はtelnetプロトコル(rfc854)の存在を知っているのだろうか?
結構面倒なネゴシエーションが必要。
- 684 名前:デフォルトの名無しさん [2008/01/12(土) 16:46:36 ]
- 何が使いにくいん?
- 685 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 16:51:39 ]
- httpしか繋げたことないから難しく見えるんじゃね
- 686 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 17:27:19 ]
- >>682
スレッド起こして解決できたらイベントで通知
- 687 名前:682 mailto:sage [2008/01/12(土) 18:07:52 ]
- >686
書き忘れていましたが複数のスレッドで同時に解決できるようにしたいんです。 でもgethostbynameだと同時に使えないから1つずつ解決することになって、 それはちょっと嫌だなあと。タイムアウトするまで次の解決ができないって状況は避けたい。
- 688 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 18:10:27 ]
- gethostbyname2_rとかなかったっけ?
- 689 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 19:48:04 ]
- たとえばadns使うとか。
NetBIOS系の名前解決はしてくれないけど
- 690 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 02:01:33 ]
- クライアント・サーバ間を共通鍵で暗号通信をしたいのですが,
通常のクライアント・サーバシステムにおいて,あるクライアントとの 共通鍵の関連付けはどのように行うのですか クライアントから通信を開始するとどの共通鍵で復号すれば良いかわからないと 思うのですが・・・
- 691 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 02:08:37 ]
- クライアント識別子みたいなのと鍵を1:1にしてサーバで保持しておけばどうかな?
- 692 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 02:09:16 ]
- 使っていいのが共通鍵暗号のみなら
最初はユーザー名をそのまま送るしかないんじゃないの? パスワードは暗号化して
- 693 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 02:12:31 ]
- もしくは鍵からハッシュ値でも生成して最初の通信の時に付けておけば
- 694 名前:690 mailto:sage [2008/01/14(月) 14:07:03 ]
- ありがとうございます
>>691 クライアントには,ユーザIDが与えられているので,それと関連付ける方法ができそうです. ハッシュ値を使う方法もいけそうなので検討してみます.
- 695 名前:デフォルトの名無しさん [2008/01/14(月) 17:00:13 ]
- zoomtv.web.fc2.com/?1xd04@VisualAirForce
zoomtv.web.fc2.com/?1xcvk@ParadiseCityTV zoomtv.web.fc2.com/?1xcz8@DancingDuoMiku
- 696 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:25:39 ]
- 鍵交換方式使えばいいと思うけどね
まあ、どの程度の暗号強度を求めるのかで適当に決めればいいよ
- 697 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 03:48:31 ]
- ハッシュ関数って勝手に使ってライセンスって問題ないのかな?
MD5とかSHA-1とか
- 698 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 04:28:58 ]
- アルゴリズム自体には無いけどライブラリは別なんで気をつけないといかん
嫌なら自分で書け
- 699 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 05:28:48 ]
- Javaならデフォでついてるけどな
- 700 名前:674 mailto:sage [2008/01/15(火) 12:02:02 ]
- >>684
4-5年前 NetBSDの teldx だったかな、telnet サーバーのソースは見たことあります。 しかし、コードがトリッキーなのがはいってて理解不能でした。 teldx に限らず、while ループが何百行もつづいてたり、マクロがぐちゃぐちゃはいって たりして読みずらい。。
- 701 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 13:15:06 ]
- >>694
OpenSSLは/etc/ssl/certsに証明書が置いてあるよ。 もちろん証明書の中には公開鍵が入ってる。 openssl dgstコマンドでハッシュつくって、 そのハッシュが名前になったシンボリックリンクが本体へ向けてある。 WindowsでもOpenSSLならC:\etc〜になるだけで同じ。
- 702 名前:デフォルトの名無しさん [2008/01/15(火) 18:32:21 ]
- マルチスレッドで以下のような構成です。
・UI スレッド(main スレッド) ・作業スレッド(Winsock1.1 初期化/後処理 + データの送受信) この場合はWinsockのデータベース関数をどちらのスレッドで使用するべきですか?
- 703 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 18:35:21 ]
- >>702
何がいいたいのかわからないのだけど… >Winsockのデータベース関数 ってなにかな?
- 704 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:03:30 ]
- gethostby〜とか
- 705 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:05:43 ]
- netdb.h
- 706 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:28:42 ]
- >>702
今時 Winsock 1.1 もどうかと思うが、どっちにせよ Winsock の初期化/後処理 (Cleanup のことかな?) を作業スレッドで やるなら、Winsock 関連の処理は作業スレッドでやった方が いいと思う。
- 707 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 01:43:38 ]
- 新たに名前引き用スレッドプールを新設するのが好み。
- 708 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 11:02:38 ]
- 結果のコンシューマもマルチスレッディドになってないと意味ないけどね。
- 709 名前:デフォルトの名無しさん [2008/01/16(水) 16:51:22 ]
- 作業スレッド内でWinsockの処理を行うとして、
データベース関数はWSAAsyncGetHostByName等、非同期を用いるべきでしょうか?
- 710 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:59:30 ]
- それは、君のやりたいこと次第だからなんとも言えないけど、
WSAAsyncGetHostByName() は、ウィンドハンドルを要するから 作業スレッドでは使いにくいよ。 ぶっちゃけ WSAAsyncGetHostByName() は、スレッド使わない 人向けだよ。
|

|