1 // CasClient.cpp: CCasClient
\83N
\83\89\83X
\82Ì
\83C
\83\93\83v
\83\8a\83\81\83\93\83e
\81[
\83V
\83\87\83\93\r
3 //////////////////////////////////////////////////////////////////////
\r
10 #define TCP_TIMEOUT 1000UL // 1
\95b
\r
13 CCasClient::CCasClient(ICasClientHandler *pEventHandler, CSmartSock *pSocket)
\r
15 , m_pSocket(pSocket)
\r
16 , m_pEventHandler(pEventHandler)
\r
17 , m_hClientThread(NULL)
\r
19 //
\83N
\83\89\83C
\83A
\83\93\83g
\83X
\83\8c\83b
\83h
\8bN
\93®
\r
20 pthread_create(&m_hClientThread, NULL, CCasClient::ClientThreadRaw, (LPVOID)this);
\r
21 if(!m_hClientThread){
\r
22 printf("ClientThread failed\n");
25 printf("ClientThread started\n");
28 CCasClient::~CCasClient(void)
\r
31 if (m_hClientThread) pthread_join(m_hClientThread, NULL);
\r
34 void CCasClient::CloseClient(void)
\r
36 //
\83N
\83\89\83C
\83A
\83\93\83g
\82ð
\90Ø
\92f
\82·
\82é
\r
40 void CCasClient::ClientThread(void)
\r
42 //
\83J
\81[
\83h
\83\8a\81[
\83_
\82ð
\8aJ
\82
\r
43 if(!OpenCard())return;
\r
45 //
\8eó
\90M
\83o
\83b
\83t
\83@
\r
50 //
\83\81\83b
\83Z
\81[
\83W
\8eó
\90M
\83\8b\81[
\83v
\r
52 //
\83w
\83b
\83_
\82ð
\8eó
\90M
\r
53 if(!m_pSocket->Recv(&byDataLen, 1UL, TCP_TIMEOUT)){
\r
54 if(m_pSocket->GetLastError() == CSmartSock::EC_TIMEOUT)continue;
\r
58 //
\83f
\81[
\83^
\82ð
\8eó
\90M
\r
59 if(!m_pSocket->Recv(RecvBuf, byDataLen, TCP_TIMEOUT))break;
61 //
\83J
\81[
\83h
\91\97\8eó
\90M
\r
62 if(!TransmitCommand(RecvBuf, byDataLen, &RecvBuf[1], sizeof(RecvBuf) - 1UL, &dwRecvSize))dwRecvSize = 0UL;
64 //
\83f
\81[
\83^
\82ð
\91\97\90M
\r
65 RecvBuf[0] = (BYTE)dwRecvSize;
\r
66 if(!m_pSocket->Send(RecvBuf, dwRecvSize + 1UL, TCP_TIMEOUT))break;
69 printf("ClientThread exited\n");
70 //
\83J
\81[
\83h
\83\8a\81[
\83_
\82ð
\95Â
\82¶
\82é
\r
74 void* CCasClient::ClientThreadRaw(LPVOID pParam)
\r
76 //
\83N
\83\89\83C
\83A
\83\93\83g
\83X
\83\8c\83b
\83h
\r
77 CCasClient *pThis = static_cast<CCasClient *>(pParam);
\r
79 //
\90Ú
\91±
\83C
\83x
\83\93\83g
\92Ê
\92m
\r
80 pThis->SendEvent(EID_CONNECTED);
82 //
\83\81\83\93\83o
\8aÖ
\90\94\82É
\83\8a\83_
\83C
\83\8c\83N
\83g
\82·
\82é
\r
83 pThis->ClientThread();
85 //
\90Ø
\92f
\83C
\83x
\83\93\83g
\92Ê
\92m
\r
86 pThis->SendEvent(EID_DISCONNECTED);
93 void CCasClient::SendEvent(const DWORD dwEventID, PVOID pParam)
\r
95 //
\83n
\83\93\83h
\83\89\82É
\83C
\83x
\83\93\83g
\82ð
\92Ê
\92m
\82·
\82é
\r
96 if(m_pEventHandler)m_pEventHandler->OnCasClientEvent(this, dwEventID, pParam);
\r