<?xml version="1.0" encoding="UTF-8" ?>
<rss version="0.91">
  <channel>
    <title>VC++闘いの足跡</title>
    <description>これは心の摘み合いだ。。。</description>
    <link>https://studyvc.blog.shinobi.jp/</link>
    <language>ja</language>
    <copyright>Copyright (C) NINJATOOLS ALL RIGHTS RESERVED.</copyright>

    <item>
      <title>スレッド・・・</title>
      <description>課題を簡単にしてもらいました。&lt;br /&gt;
&lt;br /&gt;
Aボタン押下でスレッド作成、&lt;br /&gt;
Bボタン押下でスレッド終了する&lt;br /&gt;
&lt;br /&gt;
スレッドが殺せない・・・</description> 
      <link>https://studyvc.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E3%83%BB%E3%83%BB%E3%83%BB</link> 
    </item>
    <item>
      <title>私の頭の中の。。。</title>
      <description>実現したい機能って、どうやってまとめたらいいんだろ。。。&lt;br /&gt;
とりあえず、羅列？？？</description> 
      <link>https://studyvc.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/%E7%A7%81%E3%81%AE%E9%A0%AD%E3%81%AE%E4%B8%AD%E3%81%AE%E3%80%82%E3%80%82%E3%80%82</link> 
    </item>
    <item>
      <title>MainViewまとめ。</title>
      <description>①基本クラスはCFormViewクラス。&lt;br /&gt;
②スタイル：チャイルド、境界線：なしにする。&lt;br /&gt;
③MainViewのﾍｯﾀﾞﾌｧｲﾙをインクルードするのを忘れずに。&lt;br /&gt;
④ラインタイム箇所を変更する。</description> 
      <link>https://studyvc.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/mainview%E3%81%BE%E3%81%A8%E3%82%81%E3%80%82</link> 
    </item>
    <item>
      <title>MFC アプリケーション内のスレッド間でソケット接続を渡す方法</title>
      <description>&lt;h1 class=&quot;title&quot;&gt;Visual C++ を使用して MFC アプリケーション内のスレッド間でソケット接続を渡す方法&lt;/h1&gt;
&lt;h2 id=&quot;tocHeadRef&quot; class=&quot;subTitle&quot;&gt;&lt;font size=&quot;3&quot;&gt;------------------------------------------------------------------------------------------------------------------------------------------&lt;/font&gt;&lt;strong&gt;&lt;font size=&quot;3&quot;&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/strong&gt; &lt;/h2&gt;
&lt;h2 id=&quot;tocHeadRef&quot; class=&quot;subTitle&quot;&gt;概要&lt;/h2&gt;
&lt;script type=&quot;text/javascript&quot;&gt;loadTOCNode(1, 'summary');&lt;/script&gt;
&lt;div class=&quot;sbody&quot;&gt; この資料では、MFC アプリケーションのスレッド間でソケット接続を渡す方法をサンプルで示します。サンプルはサーバーとクライアントの 2 つのプロジェクトで構成されています。サーバーは接続ごとに新規スレッドを作成してクライアントと通信します。
&lt;p class=&quot;topOfPage&quot;&gt;&lt;a href=&quot;http://support.microsoft.com/kb/175668/ja#top&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://support.microsoft.com/library/images/support/cn/uparrowsrc.gif&quot; /&gt;先頭へ戻る&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;tocHeadRef&quot; class=&quot;subTitle&quot;&gt;詳細&lt;/h2&gt;
&lt;script type=&quot;text/javascript&quot;&gt;loadTOCNode(1, 'moreinformation');&lt;/script&gt;
&lt;h3 id=&quot;tocHeadRef&quot;&gt; サーバー &lt;/h3&gt;
&lt;script type=&quot;text/javascript&quot;&gt;loadTOCNode(2, 'moreinformation');&lt;/script&gt;
サー バーでは、MFC アプリケーションの複数のスレッドでソケットを使用する方法を示します。サーバーは接続要求を待ちます。新しい接続が要求されるとそれを受け付け、接続を 処理するスレッドを作成します。サーバーがメッセージを受信した場合は、そのメッセージを反転してクライアントに送り返します。 &lt;br /&gt;
&lt;br /&gt;
MFC では、新しい接続の場合は、リスニング ソケットのあるスレッドで接続を受け付ける必要があります。Accept の呼び出しは CAsyncSocket オブジェクト内で渡す必要があります。その後 MFC により、接続がスレッドで処理されるように、すべての情報が適切にセットアップされます。この接続を別のスレッドで処理する場合は、そのスレッドに MFC オブジェクトを渡すだけでは正常に機能しません。別のスレッドで接続が処理されるようにすべてを適切にセットアップするには、以下の手順を実行する必要が あります。 &lt;br /&gt;
&lt;br /&gt;
&lt;table class=&quot;list ol&quot;&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td class=&quot;number&quot;&gt;1.&lt;/td&gt;
            &lt;td class=&quot;text&quot;&gt; 接続を受け付けたスレッドで、CAsyncSocket オブジェクトからソケット ハンドルをデタッチします。 &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td class=&quot;number&quot;&gt;2.&lt;/td&gt;
            &lt;td class=&quot;text&quot;&gt; ソケット ハンドルをスレッドに渡します。 &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td class=&quot;number&quot;&gt;3.&lt;/td&gt;
            &lt;td class=&quot;text&quot;&gt; スレッドで、このハンドルを CAsyncSocket 派生オブジェクトにアタッチします。 &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
スレッドの Attach の呼び出しによって、接続を処理するスレッドに送信されるソケット通知にすべての情報が適切にセットアップされます。 &lt;br /&gt;
&lt;br /&gt;
サーバー プロジェクトから抜き出した次のコードは、これを示したものです。 &lt;br /&gt;
&lt;br /&gt;
リスニング ソケットでの OnAccept &lt;code&gt;&lt;/code&gt;
&lt;pre class=&quot;code&quot;&gt;   void CListensoc::OnAccept(int nErrorCode)&lt;br /&gt;   {&lt;br /&gt;      // New connection is being established&lt;br /&gt;&lt;br /&gt;      CSocket soc;&lt;br /&gt;&lt;br /&gt;      // Accept the connection using a temp CSocket object.&lt;br /&gt;      Accept(soc);&lt;br /&gt;&lt;br /&gt;      // Create a thread to handle the connection.&lt;br /&gt;      // The thread is created suspended so that we can&lt;br /&gt;      // set variables in CConnectThread before it starts executing.&lt;br /&gt;      CConnectThread* pThread =&lt;br /&gt;         (CConnectThread*)AfxBeginThread(&lt;br /&gt;            RUNTIME_CLASS(CConnectThread),&lt;br /&gt;            THREAD_PRIORITY_NORMAL,&lt;br /&gt;            0,&lt;br /&gt;            CREATE_SUSPENDED);&lt;br /&gt;   ...&lt;br /&gt;      // Pass the socket to the thread by passing the socket handle.&lt;br /&gt;      // You cannot pass a CSocket object across threads.&lt;br /&gt;      pThread-&amp;gt;m_hSocket = soc.Detach();&lt;br /&gt;&lt;br /&gt;      // Now start the thread.&lt;br /&gt;      pThread-&amp;gt;ResumeThread();&lt;br /&gt;&lt;br /&gt;      CAsyncSocket::OnAccept(nErrorCode);&lt;br /&gt;   }&lt;br /&gt;				&lt;/pre&gt;
スレッドの InitInstance &lt;code&gt;&lt;/code&gt;
&lt;pre class=&quot;code&quot;&gt;   BOOL CConnectThread::InitInstance()&lt;br /&gt;   {&lt;br /&gt;   ...&lt;br /&gt;      // Attach the socket handle to a CSocket object.&lt;br /&gt;      // This makes sure that the socket notifications are sent&lt;br /&gt;      // to this thread.&lt;br /&gt;      m_socket.Attach(m_hSocket);&lt;br /&gt;   ...&lt;br /&gt;   }&lt;br /&gt;				&lt;/pre&gt;
上記のコードにより、ソケットが 2 番目のスレッドに適切にセットアップされます。&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
msdnより。&lt;br /&gt;
&lt;br /&gt;
わかったような、わからないような。。。</description> 
      <link>https://studyvc.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/mfc%20%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E5%86%85%E3%81%AE%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E9%96%93%E3%81%A7%E3%82%BD%E3%82%B1%E3%83%83%E3%83%88%E6%8E%A5%E7%B6%9A%E3%82%92%E6%B8%A1%E3%81%99%E6%96%B9%E6%B3%95</link> 
    </item>
    <item>
      <title>課題１</title>
      <description>サーバ１　対　クライアント１　で&lt;br /&gt;
メッセージのやりとりをしなさい。</description> 
      <link>https://studyvc.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/%E8%AA%B2%E9%A1%8C%EF%BC%91</link> 
    </item>
    <item>
      <title>テスト</title>
      <description>テスト</description> 
      <link>https://studyvc.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/%E3%83%86%E3%82%B9%E3%83%88</link> 
    </item>

  </channel>
</rss>