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

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

?? ddksrvsocket.cpp

?? modbus PLC 模擬程序
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
// DDKSrvSocket.cpp: implementation of the CDDKSrvSocket class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

// # of times a connected server socket will loop for without getting any RX data 
// before it closes and gets ready to accept new connections again.
#define MAX_IDLE_LOOPS   10


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

IMPLEMENT_DYNAMIC( CDDKSrvSocket, CDDKSocket);

// This server socket object will construct a listen socket of accept a pointer to an existing socket.
CDDKSrvSocket::CDDKSrvSocket(unsigned short port,unsigned long IPAddrULONG /*= ADDR_ANY*/, SOCKET * pServerSocket /*=NULL*/) : CDDKSocket()
{
int error;
CHAR errStr[180],debugStr[180];
INT      sockoptEnable = TRUE;   

   m_serverObject = TRUE;
   m_pSocket      = NULL;

   int check1 = 0x1234;
   m_buffer = new char[m_serverBufferSize];
   int check2 = 0x1234;

   // server stuff
   // Create a Thread and then a Server-end socket to listen on later

   // create the listening thread
   m_listenThreadStatus = SOCKET_EX_PENDING;
   m_pWorkerThread      = AfxBeginThread((AFX_THREADPROC)SockAsyncFriend,
                                     this,
                                     THREAD_PRIORITY_TIME_CRITICAL, 0,
                                     CREATE_SUSPENDED
                                    );
   // construct with IP and port or with an existing socket
   if (NULL == pServerSocket)
   {

      // Setup local addressing for listen socket
      m_localSockaddr_in.sin_family           = PF_INET;
      m_localSockaddr_in.sin_addr.S_un.S_addr = INADDR_ANY; //usually default
      if ((m_localSockaddr_in.sin_port = htons((u_short) port)) == 0)
      {
         sprintf(debugStr, "Cannot use port %ld", port);
         OutputDebugString(debugStr);

         // Fail the connection process
         m_socketStatus = SOCKET_UNCONFIGURED;
         return;
      }

      // Map protocol name to protocol number
      if ((m_ppe = getprotobyname("tcp")) == NULL)
      {
         GetSockError(errStr);
         sprintf(debugStr,"Driver cannot connect for listen :%s",errStr);
         OutputDebugString(debugStr);
         // Fail the connection process
         m_socketStatus = SOCKET_UNCONFIGURED;
         return;
      }

      // Allocate a listen socket
      m_socket = socket(PF_INET, SOCK_STREAM, m_ppe->p_proto); 
      // If we could not allocate a socket, we must fail the connection process
      if (INVALID_SOCKET == m_socket)  // recommended NT error check
      {
         GetSockError(errStr);
         sprintf(debugStr, "Cannot create Listen socket :%s",errStr);
         OutputDebugString(debugStr);
          // Fail the connection process
         m_socketStatus = SOCKET_UNCONFIGURED;
         return;
      }
      // now to bind socket to local address+port
      if (0 != bind(m_socket, (sockaddr *)&(m_localSockaddr_in), sizeof(m_localSockaddr_in) ) )
      {
         GetSockError(errStr);
         sprintf(debugStr, "Cannot Bind to Listen socket :%s",errStr);
         OutputDebugString(debugStr);
         // Fail the connection process
         m_socketStatus = SOCKET_UNCONFIGURED;
         return;
      }
      // Set the socket to not delay any sends 
      error = setsockopt(m_socket, IPPROTO_TCP, TCP_NODELAY, (CHAR FAR * ) &m_sockoptEnable, sizeof (INT));
      // If we could not set the socket parameters, we must fail the connection process
      if (error == (LONG) SOCKET_ERROR)
      {
         int lastError = WSAGetLastError();
         sprintf(debugStr, "Cannot setsockopt error (%ld)", lastError);
         OutputDebugString(debugStr);
         // Fail the connection process
         m_socketStatus = SOCKET_UNCONFIGURED;
         return;
      }
      m_pSocket = &m_socket;
      m_socketStatus = SOCKET_INITIALISED;
   }
   else
   {
      // use a socket provided to us.
      // do this when many threads listen and accept connections on the same socket.
      m_pSocket = pServerSocket;
   }
   m_socketStatus = SOCKET_INITIALISED;

   strcpy(debugStr, "Socket created OK.");
   
   SockDataMessage(debugStr);

   m_listenThreadStatus = SOCKET_EX_RUNNING;
}

CDDKSrvSocket::~CDDKSrvSocket()
{
   // get the thread to die off
   //delete(m_buffer);
   //OutputDebugString("In Server socket destructor\n");
   m_listenThreadStatus = SOCKET_EX_TERMINATE;
   
   // abort any listen in progress, this only executes on 1st comms thread's socket, since it created it
   if (INVALID_SOCKET != m_socket)
   {
      closesocket(m_socket);
      m_socket = INVALID_SOCKET;
   }
   // wait for thread to die off
   CSingleLock lk(&m_threadDeadEvent);
   lk.Lock(5000); // wait max 5 seconds

   if (NULL != AcceptedAsyncSocket)
   {
      closesocket(AcceptedAsyncSocket); //kill accepted instance immediately
      accepted = FALSE;
      OutputDebugString("Server socket closing normally.\n");
      SockStateChanged(SOCKETCURRENTLY_CLOSING);
   }
}

#ifdef _DEBUG
VOID CDDKSrvSocket::Dump(CDumpContext& dc) const
{
   // call the base class first
   CDDKSocket::Dump(dc);

   // dump our object to the debuggers output
   // all important members can be dumped at this stage.
   dc << "Server socket: " << "\n";
} // Dump
#endif // _DEBUG


// ------------------------------ SockSockAsyncFriend ------------------------------
UINT SockAsyncFriend(LPVOID pParam)
{
CHAR     debugStr2[MAX_DEBUG_STR_LEN];
CHAR     debugStr[MAX_DEBUG_STR_LEN];
CDDKSrvSocket* DDKSockPtr;

   Sleep(500);
   // OK now since everyone will be asking me what is this sleep doing here. So I am
   // going to tell U. We are being naughty, this thread actually starts executing 
   // while the parent class is constructing, consequently all calls to virtual functions
   // are made before the parent has initialized completely (constructor body has not yet run)
   // and U ned up using un-initialized variables EEK.

   DDKSockPtr = (CDDKSrvSocket*)pParam;
   try 
   { 
		
      // call the function the thread will run in
      if (DDKSockPtr->IsKindOf(RUNTIME_CLASS( CDDKSrvSocket)))
      {
      CString msgStartup;
         // wait untill the Application is ready for us
         CSingleLock lk(&DDKSockPtr->m_threadStartupEvent);
         lk.Lock(5000); // wait max 5 seconds
         msgStartup.Format("Socket %d listen thread ID=%d running", 
                          DDKSockPtr->m_socket, 
                          GetCurrentThreadId());
         DDKSockPtr->SockDataMessage(msgStartup);
         DDKSockPtr->SockStateChanged(SOCKETCURRENTLY_VOID);
               
         DDKSockPtr->Poll(debugStr);
      }
      else
      {
         sprintf(debugStr2, "CDDKSrvSocket SockAsyncFriend pointer corruption!!!!\n");
         OutputDebugString(debugStr2);
      }
   }
   catch (...) 
   {
      OutputDebugString( "Catch\n" );
      sprintf(debugStr2, "CDDKSrvSocket SockAsyncFriend Exception !!!!\n");
      OutputDebugString(debugStr2);
   }
   try
   {
      DDKSockPtr->m_listenThreadStatus = SOCKET_EX_TERMINATED;
      {
      CString d;
         d.Format("[Thread %4d Terminating.]\n", GetCurrentThreadId());
         OutputDebugString(d);
      }
      DDKSockPtr->m_threadDeadEvent.SetEvent();// CEvent
   }
   catch (...)
   {
      CString msg;
         msg.Format("INTERNAL APPLICATION ERROR FILE %s LINE: %d\n%s\n%s", 
            __FILE__, __LINE__, __MY_APPVERSION__, __DATE__);
      OutputDebugString(msg);
   }
   //AfxEndThread(0);

   return(0);
} // SockAsyncFriend


?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩三级伦理片妻子的秘密按摩| 久久电影网站中文字幕| 偷窥国产亚洲免费视频| 琪琪久久久久日韩精品| 国产99久久久国产精品潘金| 97久久精品人人澡人人爽| 欧美日韩国产bt| 久久理论电影网| 最新国产成人在线观看| 午夜av一区二区| 国产精品69毛片高清亚洲| av在线一区二区| 欧美日韩精品一区视频| 国产亚洲1区2区3区| 洋洋av久久久久久久一区| 久久99国产精品尤物| 91亚洲精品久久久蜜桃网站| 欧美一级片在线看| 一色屋精品亚洲香蕉网站| 美女在线一区二区| 91色视频在线| 精品国产第一区二区三区观看体验| 中文字幕亚洲区| 精品制服美女久久| 日本久久一区二区三区| 日韩欧美在线综合网| 亚洲欧洲av一区二区三区久久| 奇米色777欧美一区二区| 成人av在线看| 亚洲精品在线免费播放| 亚洲成va人在线观看| 成人sese在线| 欧美精品一区二区三区在线播放| 亚洲高清视频的网址| 盗摄精品av一区二区三区| 欧美一区二区在线看| 亚洲色图在线播放| 国产传媒久久文化传媒| 欧美一区二区视频在线观看2020| 国产精品乱人伦| 激情综合五月天| 欧美麻豆精品久久久久久| 亚洲天堂2014| 成人综合婷婷国产精品久久蜜臀 | 国产精品污污网站在线观看| 五月天亚洲婷婷| 色噜噜久久综合| 国产日产欧美一区二区三区| 麻豆精品一区二区| 欧美手机在线视频| 综合久久一区二区三区| 国产剧情一区二区三区| 欧美一区日韩一区| 五月婷婷欧美视频| 欧美四级电影网| 亚洲夂夂婷婷色拍ww47| 99精品久久久久久| 国产精品色呦呦| 国产91精品精华液一区二区三区 | 六月丁香综合在线视频| 欧美剧情片在线观看| 亚洲免费av高清| av高清不卡在线| 国产精品久久二区二区| 成人免费在线视频观看| 国产91清纯白嫩初高中在线观看 | 成人高清av在线| 99国产精品一区| 国产精品久久久久影院色老大| 国产精品一区免费视频| 久久久久久久久蜜桃| 国模一区二区三区白浆| 欧美mv和日韩mv国产网站| 久久99在线观看| 精品久久久影院| 黄网站免费久久| 久久综合九色综合97婷婷女人 | 精品国产一区二区三区四区四 | www.亚洲国产| 国产精品久久久久7777按摩| 9i看片成人免费高清| 国产精品久久久久影视| 99久久精品免费看| 亚洲精品一二三区| 欧美午夜精品久久久久久超碰 | 欧美一区二区三区免费观看视频| 视频一区视频二区中文| 日韩精品在线看片z| 国内精品免费在线观看| 色综合天天综合网国产成人综合天 | 成人黄色国产精品网站大全在线免费观看| 3d动漫精品啪啪一区二区竹菊| 亚洲成av人片在线观看| 91精品国产综合久久精品性色| 美腿丝袜亚洲三区| 国产午夜一区二区三区| 99国产精品99久久久久久| 欧美高清精品3d| 久久99热这里只有精品| 日本一区二区视频在线| 91在线小视频| 亚洲不卡av一区二区三区| 精品国产三级电影在线观看| 国产成人午夜99999| 亚洲欧美在线高清| 欧美日韩成人一区| 国产在线播精品第三| 中文字幕一区二区三| 9191成人精品久久| 激情偷乱视频一区二区三区| 欧美亚洲国产一区二区三区va| 日韩国产成人精品| 久久久久久夜精品精品免费| 99国产精品99久久久久久| 日韩av电影免费观看高清完整版在线观看| 欧美成人官网二区| 99综合电影在线视频| 亚洲成人精品在线观看| 国产清纯美女被跳蛋高潮一区二区久久w| 99精品视频一区二区三区| 日韩成人精品在线观看| 国产精品你懂的| 9191成人精品久久| 亚洲综合成人在线| 久久综合视频网| 91福利国产精品| 国产精品一区二区久久不卡 | 色婷婷综合久久久中文一区二区| 日韩精品亚洲一区二区三区免费| 久久久精品天堂| 欧美视频一区二区三区四区| 激情六月婷婷久久| 亚洲国产视频一区二区| 色综合久久久久综合体| 黄色资源网久久资源365| 亚洲国产色一区| 中文在线资源观看网站视频免费不卡 | 欧美综合欧美视频| 亚洲色图色小说| 欧美xxxxxxxxx| 在线一区二区三区做爰视频网站| 精品在线亚洲视频| 亚洲国产精品久久不卡毛片 | 亚洲欧美乱综合| 精品国产三级a在线观看| 欧美亚日韩国产aⅴ精品中极品| 国产成人啪午夜精品网站男同| 婷婷六月综合亚洲| 亚洲激情成人在线| 国产精品色婷婷久久58| 日韩精品一区二| 91精品福利在线一区二区三区 | 亚洲一区二区三区免费视频| 中文天堂在线一区| 精品成人a区在线观看| 欧美精品在线视频| 一本大道久久a久久精二百| 国产iv一区二区三区| 免费精品视频最新在线| 亚洲一区二区三区四区在线观看 | 91视频91自| 成人av在线网| 成人一区二区三区中文字幕| 狠狠色综合播放一区二区| 日韩高清不卡一区二区| 伊人婷婷欧美激情| 亚洲男人的天堂在线观看| 欧美国产一区二区在线观看| 久久伊99综合婷婷久久伊| 日韩欧美成人激情| 日韩三级视频在线观看| 欧美一卡在线观看| 91精品国产综合久久精品图片| 欧美老肥妇做.爰bbww| 欧美理论电影在线| 欧美日韩国产高清一区二区三区| 欧美私模裸体表演在线观看| 在线精品视频免费观看| 色哟哟一区二区| 欧洲另类一二三四区| 欧美亚洲国产一区在线观看网站 | 日韩不卡在线观看日韩不卡视频| 亚洲大片免费看| 亚洲成人av在线电影| 精品国产伦一区二区三区观看方式| 国产成人小视频| 成人午夜碰碰视频| 北条麻妃一区二区三区| 91蜜桃在线免费视频| 91免费精品国自产拍在线不卡| 99re成人精品视频| 日韩福利视频导航| 国产精品日韩成人| 亚洲视频免费看| 亚洲一区二区三区中文字幕在线 | 亚洲精品在线免费观看视频| 精品国产乱码久久久久久老虎| 久久在线观看免费| 国产精品每日更新在线播放网址| 日韩理论电影院|