亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? ssl-server.cpp

?? 這是廣泛使用的通信開(kāi)源項(xiàng)目,對(duì)于大容量,高并發(fā)的通訊要求完全能夠勝任,他廣泛可用于網(wǎng)絡(luò)游戲醫(yī)學(xué)圖像網(wǎng)關(guān)的高qos要求.更詳細(xì)的內(nèi)容可閱讀相應(yīng)的材料
?? CPP
字號(hào):
// SSL-server.cpp,v 1.10 2003/11/26 14:52:09 jwillemsen Exp

// This example tests the features of the <ACE_SSL_SOCK_Acceptor>,
// <ACE_SSL_SOCK_Stream>, and <ACE_Svc_Handler> classes.  If the platform
// supports threads it uses a thread-per-connection concurrency model.
// Otherwise, it uses a single-threaded iterative server model.

#include "ace/Thread_Manager.h"
#include "ace/Handle_Set.h"
#include "ace/Profile_Timer.h"
#include "ace/OS_NS_sys_select.h"

#include "ace/SSL/SSL_SOCK_Acceptor.h"

ACE_RCSID(SSL_SAP, SSL_server, "SSL-server.cpp,v 1.10 2003/11/26 14:52:09 jwillemsen Exp")

// Are we running verbosely?
static int verbose = 0;

static void
run_server (ACE_THR_FUNC server,
            ACE_SSL_SOCK_Stream * new_stream)
{
#if defined (ACE_HAS_THREADS)
  // Spawn a new thread and run the new connection in that thread of
  // control using the <server> function as the entry point.
  if (ACE_Thread_Manager::instance ()->spawn (server,
                                              (void *) new_stream,
                                              THR_DETACHED) == -1)
    ACE_ERROR ((LM_ERROR,
                "(%P|%t) %p\n",
                "spawn"));
#else
  (*server) ((void *) new_stream);
#endif /* ACE_HAS_THREADS */
}

// Function entry point into the twoway server task.

static ACE_THR_FUNC_RETURN
twoway_server (void *arg)
{
  ACE_INET_Addr cli_addr;
  ACE_SSL_SOCK_Stream * new_stream = (ACE_SSL_SOCK_Stream *) arg;

  // Make sure we're not in non-blocking mode.
  if (new_stream->disable (ACE_NONBLOCK) == -1)
    ACE_ERROR_RETURN ((LM_ERROR,
                       "%p\n",
                       "disable"),
                       0);
  else if (new_stream->get_remote_addr (cli_addr) == -1)
    ACE_ERROR_RETURN ((LM_ERROR,
                       "%p\n",
                       "get_remote_addr"),
                       0);

  ACE_DEBUG ((LM_DEBUG,
              "(%P|%t) client %s connected from %d\n",
              cli_addr.get_host_name (),
              cli_addr.get_port_number ()));

  size_t total_bytes = 0;
  size_t message_count = 0;

  char *request = 0;

  // Read data from client (terminate on error).

  for (;;)
    {
      ACE_INT32 len;

      ssize_t r_bytes = new_stream->recv_n ((void *) &len,
                                           sizeof (ACE_INT32));
      if (r_bytes == -1)
        {
          ACE_ERROR ((LM_ERROR,
                      "%p\n",
                      "recv"));
          break;
        }
      else if (r_bytes == 0)
        {
          ACE_DEBUG ((LM_DEBUG,
                      "(%P|%t) reached end of input, connection closed by client\n"));
          break;
        }
      else if (r_bytes != sizeof (ACE_INT32))
        {
          ACE_ERROR ((LM_ERROR,
                      "(%P|%t) %p\n",
                      "recv_n failed"));
          break;
        }
      else
        {
          len = ntohl (len);
          ACE_NEW_RETURN (request,
                          char [len],
                          0);
        }

      // Subtract off the sizeof the length prefix.
      r_bytes = new_stream->recv_n (request,
                                   len - sizeof (ACE_UINT32));
      if (r_bytes == -1)
        {
          ACE_ERROR ((LM_ERROR,
                      "%p\n",
                      "recv"));
          break;
        }
      else if (r_bytes == 0)
        {
          ACE_DEBUG ((LM_DEBUG,
                      "(%P|%t) reached end of input, "
                      "connection closed by client\n"));
          break;
        }
      else if (verbose
               && ACE::write_n (ACE_STDOUT,
                                request,
                                r_bytes) != r_bytes)
        ACE_ERROR ((LM_ERROR,
                    "%p\n",
                    "ACE::write_n"));
      else if (new_stream->send_n (request,
                                  r_bytes) != r_bytes)
        ACE_ERROR ((LM_ERROR,
                    "%p\n",
                    "send_n"));

      total_bytes += size_t (r_bytes);
      message_count++;

      delete [] request;
      request = 0;
    }

  // Close new endpoint (listening endpoint stays open).
  new_stream->close ();

  delete new_stream;

  delete [] request;

  return 0;
}

// Function entry point into the oneway server task.

static ACE_THR_FUNC_RETURN
oneway_server (void *arg)
{
  ACE_INET_Addr cli_addr;
  ACE_SSL_SOCK_Stream * new_stream = (ACE_SSL_SOCK_Stream *) arg;

  // Make sure we're not in non-blocking mode.
  if (new_stream->disable (ACE_NONBLOCK) == -1)
    ACE_ERROR_RETURN ((LM_ERROR,
                       "%p\n",
                       "disable"),
                       0);
  else if (new_stream->get_remote_addr (cli_addr) == -1)
    ACE_ERROR_RETURN ((LM_ERROR,
                       "%p\n",
                       "get_remote_addr"),
                       0);

  ACE_DEBUG ((LM_DEBUG,
              "(%P|%t) client %s connected from %d\n",
              cli_addr.get_host_name (),
              cli_addr.get_port_number ()));

  // Timer business
  ACE_Profile_Timer timer;
  timer.start ();

  size_t total_bytes = 0;
  size_t message_count = 0;

  char *request = 0;

  // Read data from client (terminate on error).

  for (;;)
    {
      ACE_INT32 len;

      ssize_t r_bytes = new_stream->recv_n ((void *) &len,
                                           sizeof (ACE_INT32));
      if (r_bytes == -1)
        {
          ACE_ERROR ((LM_ERROR,
                      "%p\n",
                      "recv"));
          break;
        }
      else if (r_bytes == 0)
        {
          ACE_DEBUG ((LM_DEBUG,
                      "(%P|%t) reached end of input, connection closed by client\n"));
          break;
        }
      else if (r_bytes != sizeof (ACE_INT32))
        {
          ACE_ERROR ((LM_ERROR,
                      "(%P|%t) %p\n",
                      "recv_n failed"));
          break;
        }
      else
        {
          len = ntohl (len);
          ACE_NEW_RETURN (request,
                          char [len],
                          0);
        }

      // Subtract off the sizeof the length prefix.
      r_bytes = new_stream->recv_n (request,
                                   len - sizeof (ACE_UINT32));

      if (r_bytes == -1)
        {
          ACE_ERROR ((LM_ERROR,
                      "%p\n",
                      "recv"));
          break;
        }
      else if (r_bytes == 0)
        {
          ACE_DEBUG ((LM_DEBUG,
                      "(%P|%t) reached end of input, connection closed by client\n"));
          break;
        }
      else if (verbose
               && ACE::write_n (ACE_STDOUT, request, r_bytes) != r_bytes)
        ACE_ERROR ((LM_ERROR,
                    "%p\n",
                    "ACE::write_n"));

      total_bytes += size_t (r_bytes);
      message_count++;

      delete [] request;
      request = 0;
    }

  timer.stop ();

  ACE_Profile_Timer::ACE_Elapsed_Time et;
  timer.elapsed_time (et);

  ACE_DEBUG ((LM_DEBUG,
              ACE_TEXT ("\t\treal time = %f secs \n")
              ACE_TEXT ("\t\tuser time = %f secs \n")
              ACE_TEXT ("\t\tsystem time = %f secs\n"),
              et.real_time,
              et.user_time,
              et.system_time));

  double messages_per_sec = double (message_count) / et.real_time;

  ACE_DEBUG ((LM_DEBUG,
              ACE_TEXT ("\t\tmessages = %d\n")
              ACE_TEXT ("\t\ttotal bytes = %d\n")
              ACE_TEXT ("\t\tmbits/sec = %f\n")
              ACE_TEXT ("\t\tusec-per-message = %f\n")
              ACE_TEXT ("\t\tmessages-per-second = %0.00f\n"),
              message_count,
              total_bytes,
              (((double) total_bytes * 8) / et.real_time) / (double) (1024 * 1024),
              (et.real_time / (double) message_count) * 1000000,
              messages_per_sec < 0 ? 0 : messages_per_sec));

  // Close new endpoint (listening endpoint stays open).
  new_stream->close ();

  delete new_stream;

  delete [] request;

  return 0;
}

static int
run_event_loop (u_short port)
{
  // Raise the socket handle limit to the maximum.
  ACE::set_handle_limit ();

  // Create the oneway and twoway acceptors.
  ACE_SSL_SOCK_Acceptor twoway_acceptor;
  ACE_SSL_SOCK_Acceptor oneway_acceptor;

  // Create the oneway and twoway server addresses.
  ACE_INET_Addr twoway_server_addr (port);
  ACE_INET_Addr oneway_server_addr (port + 1);

  // Create acceptors, reuse the address.
  if (twoway_acceptor.open (twoway_server_addr, 1) == -1
      || oneway_acceptor.open (oneway_server_addr, 1) == -1)
    ACE_ERROR_RETURN ((LM_ERROR,
                       "%p\n",
                       "open"),
                      1);
  else if (twoway_acceptor.get_local_addr (twoway_server_addr) == -1
           || oneway_acceptor.get_local_addr (oneway_server_addr) == -1)
    ACE_ERROR_RETURN ((LM_ERROR,
                       "%p\n",
                       "get_local_addr"),
                      1);

  ACE_DEBUG ((LM_DEBUG,
              "(%P|%t) starting twoway server at port %d and oneway server at port %d\n",
              twoway_server_addr.get_port_number (),
              oneway_server_addr.get_port_number ()));

  // Keep these objects out here to prevent excessive constructor
  // calls within the loop.

  ACE_Handle_Set handle_set;
  handle_set.set_bit (twoway_acceptor.get_handle ());
  handle_set.set_bit (oneway_acceptor.get_handle ());

  ACE_SSL_SOCK_Stream * new_stream = 0;

  // Performs the iterative server activities.
  for (;;)
    {
      ACE_Time_Value timeout (ACE_DEFAULT_TIMEOUT);
      ACE_Handle_Set temp = handle_set;

      int result = ACE_OS::select (int (oneway_acceptor.get_handle ()) + 1,
                                   (fd_set *) temp,
                                   0,
                                   0,
                                   timeout);
      if (result == -1)
        ACE_ERROR ((LM_ERROR,
                    "(%P|%t) %p\n",
                    "select"));
      else if (result == 0 && verbose)
        ACE_DEBUG ((LM_DEBUG,
                    "(%P|%t) select timed out\n"));
      else
        {
          // A new ACE_SSL_SOCK_Stream must be initialized for each
          // connection.  However, it retains (SSL) state so simply
          // initializing a new ACE_SSL_SOCK_Stream by passing it a
          // handle isn't enough, nor is it allowed.  Such a scheme is
          // is sometimes done with the non-SSL aware
          // ACE_SOCK_Stream.  An ACE_SSL_SOCK_Stream should only be
          // initialized by an ACE_SSL_SOCK_Acceptor (server side), or an
          // ACE_SSL_SOCK_Connector (client side).
          //
          // It is also possible to copy or assign an
          // ACE_SSL_SOCK_Stream since it implements both
          // methods/operators.  However, the user must ensure that
          // the copy or assignment is atomic.

          if (temp.is_set (twoway_acceptor.get_handle ()))
            {
              ACE_NEW_RETURN (new_stream,
                              ACE_SSL_SOCK_Stream,
                              -1);

              if (twoway_acceptor.accept (*new_stream) == -1)
                {
                  ACE_ERROR ((LM_ERROR,
                              "%p\n",
                              "accept"));

                  delete new_stream;

                  continue;
                }
              else
                ACE_DEBUG ((LM_DEBUG,
                            "(%P|%t) spawning twoway server\n"));

              // Run the twoway server.
              run_server (twoway_server,
                          new_stream);
            }
          if (temp.is_set (oneway_acceptor.get_handle ()))
            {
              ACE_NEW_RETURN (new_stream,
                              ACE_SSL_SOCK_Stream,
                              -1);

              if (oneway_acceptor.accept (*new_stream) == -1)
                {
                  ACE_ERROR ((LM_ERROR, "%p\n", "accept"));

                  delete new_stream;

                  continue;
                }
              else
                ACE_DEBUG ((LM_DEBUG,
                            "(%P|%t) spawning oneway server\n"));

              // Run the oneway server.
              run_server (oneway_server,
                          new_stream);
            }
        }
    }

  /* NOTREACHED */
}

int
main (int argc, char *argv[])
{
  ACE_SSL_Context *context = ACE_SSL_Context::instance ();

  context->certificate ("./dummy.pem", SSL_FILETYPE_PEM);
  context->private_key ("./key.pem", SSL_FILETYPE_PEM);

  u_short port = ACE_DEFAULT_SERVER_PORT;

  if (argc > 1)
    port = ACE_OS::atoi (argv[1]);

  return run_event_loop (port);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线免费视屏| 亚洲综合色噜噜狠狠| 欧美草草影院在线视频| 欧美色窝79yyyycom| 91麻豆免费观看| 成人av在线播放网址| 成人黄色777网| 成人一区二区视频| 成人动漫av在线| 色综合天天综合网天天狠天天| 972aa.com艺术欧美| 色屁屁一区二区| 欧美网站一区二区| 日韩一级大片在线观看| 欧美大胆一级视频| 国产日韩在线不卡| 亚洲视频一区在线| 亚洲二区在线观看| 久久99精品国产.久久久久久 | 日韩在线一区二区| 婷婷夜色潮精品综合在线| 爽好久久久欧美精品| 精品制服美女丁香| 国产成人av在线影院| 色乱码一区二区三区88| 欧美日韩精品一区二区三区| 欧美一区二区三区电影| 久久你懂得1024| 亚洲码国产岛国毛片在线| 亚洲大片精品永久免费| 激情伊人五月天久久综合| 国产一区二区三区美女| 91无套直看片红桃| 欧美一级理论性理论a| www国产精品av| 亚洲欧洲精品一区二区精品久久久| 亚洲综合男人的天堂| 美女视频黄 久久| av中文字幕亚洲| 欧美精品日韩综合在线| 国产亚洲成av人在线观看导航| 亚洲三级视频在线观看| 蜜臀av性久久久久蜜臀av麻豆 | 精品国产亚洲一区二区三区在线观看| 久久久久综合网| 亚洲动漫第一页| 国产aⅴ精品一区二区三区色成熟| 在线观看三级视频欧美| 久久久亚洲精品石原莉奈| 一区二区三区欧美激情| 黑人巨大精品欧美一区| 91视频xxxx| 日韩免费福利电影在线观看| 中文字幕在线观看不卡| 久久国产精品99久久人人澡| 91在线视频在线| 精品国精品自拍自在线| 亚洲制服丝袜一区| 成人免费高清在线| 日韩精品在线网站| 一区二区成人在线观看| 国产高清不卡一区| 69精品人人人人| 日韩美女视频一区| 国产精品夜夜嗨| 欧美一区二区成人| 亚洲激情图片qvod| 顶级嫩模精品视频在线看| 91精品国产综合久久久久| 亚洲精选一二三| 国产1区2区3区精品美女| 日韩午夜激情av| 亚洲第四色夜色| 一本色道**综合亚洲精品蜜桃冫| 国产人伦精品一区二区| 久久国产麻豆精品| 欧美主播一区二区三区美女| 中文字幕在线观看一区| 国产成人小视频| 2021国产精品久久精品| 日韩国产在线观看| 91国产成人在线| 最新国产の精品合集bt伙计| 国产成人日日夜夜| 欧美va亚洲va在线观看蝴蝶网| 午夜激情一区二区| 欧美性做爰猛烈叫床潮| 亚洲欧洲中文日韩久久av乱码| 国产成人自拍高清视频在线免费播放| 日韩视频免费观看高清完整版 | 777a∨成人精品桃花网| 亚洲精品欧美在线| 91丨九色丨国产丨porny| 国产精品亲子伦对白| 粉嫩高潮美女一区二区三区| 国产亚洲一区字幕| 国产一区 二区| 久久精品视频在线看| 国产伦精品一区二区三区免费迷 | 欧美激情一区二区三区| 国产成人综合亚洲91猫咪| 久久久久久99精品| 国产精品18久久久久久久久| 久久综合色之久久综合| 国产精品一级片| 国产精品视频麻豆| 91影院在线免费观看| 一区二区三区四区不卡在线| 91国产福利在线| 亚洲国产sm捆绑调教视频| 欧美日韩精品欧美日韩精品一 | 久久黄色级2电影| 欧美精品一区二区三区在线播放| 美腿丝袜在线亚洲一区| 精品国产免费一区二区三区四区| 国产乱子伦视频一区二区三区 | 亚洲免费大片在线观看| 在线观看视频一区二区欧美日韩| 一区二区在线免费观看| 欧美日韩精品一区二区三区蜜桃| 婷婷一区二区三区| 精品福利一区二区三区免费视频| 国产高清无密码一区二区三区| 国产精品福利电影一区二区三区四区| 成人午夜av影视| 亚洲永久免费av| 欧美一级久久久| 国产毛片精品视频| 亚洲狼人国产精品| 91精品国产综合久久精品性色| 精品一区二区免费看| 日本一区二区成人| 欧美三级视频在线| 国内久久精品视频| 亚洲色图视频网| 欧美一级二级三级蜜桃| 国产麻豆成人精品| 亚洲综合色成人| 2021中文字幕一区亚洲| 99re热这里只有精品免费视频| 亚洲成人资源网| 国产亚洲精久久久久久| 在线观看国产日韩| 国产精品影视天天线| 亚洲精品成人精品456| 欧美va在线播放| 91传媒视频在线播放| 国内一区二区视频| 亚洲一区中文在线| 久久久综合视频| 欧美日韩视频在线一区二区| 国产呦萝稀缺另类资源| 一区二区欧美国产| 亚洲精品一区二区三区精华液| 91天堂素人约啪| 国产一区二区免费看| 亚洲18影院在线观看| 国产精品久久福利| 日韩一区二区三区免费观看| 一本色道久久综合狠狠躁的推荐| 看国产成人h片视频| 一区二区三区欧美日| 国产情人综合久久777777| 91精品国产丝袜白色高跟鞋| 99re成人精品视频| 狠狠色丁香婷婷综合| 亚洲成av人片在线观看| 国产精品美女久久久久久 | 一区二区三区日韩欧美| 国产欧美日韩另类一区| 欧美精品丝袜久久久中文字幕| 岛国精品在线观看| 奇米一区二区三区| 亚洲综合一区二区| 1024精品合集| 中文字幕av一区 二区| 日韩欧美一区二区三区在线| 欧洲视频一区二区| 91同城在线观看| www.亚洲色图.com| 福利视频网站一区二区三区| 精品在线免费视频| 日本成人中文字幕在线视频| 亚洲午夜私人影院| 亚洲女同ⅹxx女同tv| 国产精品网站在线观看| 欧美精品一区二区三区蜜桃视频| 欧美一区二区三区四区在线观看| 在线观看日韩一区| 色婷婷久久久亚洲一区二区三区| jizzjizzjizz欧美| 成人激情小说乱人伦| 福利一区二区在线| 高清不卡一区二区在线| 国产成人在线视频免费播放| 国产一区二区成人久久免费影院 | 欧美精品日日鲁夜夜添| 欧美色图在线观看| 欧美日韩高清不卡| 欧美日韩国产一区二区三区地区|