123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- #include "stdafx.h"
- #include "YAServer.h"
- #include "ClientSocket.h"
- #include "YAServerDlg.h"
- #include "Functions/Functions.h"
- #include "socketdef.h"
- #include "socketdef.h"
- CClientSocket::CClientSocket(CYAServerDlg* pDlg)
- {
- m_pDlg = pDlg;
- m_bClosed = FALSE;
- bError = false;
- m_wReadLength = 0;
- m_wDataLength = 0;
- m_wCharacterWord = 0;
- reader_id = 0;
- m_ReceiveBuffer = (BYTE*)malloc(LENGTH_MSG_4K);
- }
- CClientSocket::~CClientSocket()
- {
- free(m_ReceiveBuffer);
-
- }
- void CClientSocket::Init()
- {
- }
- void CClientSocket::Abort()
- {
- }
- BOOL CClientSocket::SendData( WORD wCharacterWord, int wLength, BYTE* DataBuffer )
- {
- BYTE SendBuffer[LENGTH_MSG_4K];
- WORD nlength = wLength + sizeof(WORD) + sizeof(WORD);
- memset(SendBuffer, 0, LENGTH_MSG_4K);
- int nPos = 0;
- CFunctions::memcpyWord(SendBuffer, nlength, nPos);
- nPos += sizeof(WORD);
- CFunctions::memcpyWord(SendBuffer, wCharacterWord, nPos);
- nPos += sizeof(WORD);
- memcpy(&SendBuffer[nPos], &DataBuffer[0], wLength);
- nPos += wLength;
- WORD wCrc = CFunctions::getCRC(&SendBuffer[sizeof(WORD)], wLength + sizeof(WORD));
- CFunctions::memcpyWord(SendBuffer, wCrc, nPos);
- nPos += sizeof(WORD);
- int sRet = Send(SendBuffer, nPos);
- Sleep(20);
- if(sRet == SOCKET_ERROR)
- {
- return FALSE;
- }
- return TRUE;
- }
- void CClientSocket::OnSend(int nErrorCode)
- {
- switch(nErrorCode)
- {
- case 0:
- break;
- case WSAENETDOWN:
- bError = true;
-
- break;
- default:
- break;
- }
- CAsyncSocket::OnSend(nErrorCode);
- }
- void CClientSocket::OnReceive(int nErrorCode)
- {
- if( nErrorCode != 0 )
- {
- bError = true;
- return;
- }
- bError = false;
- m_bClosed = FALSE;
- m_pDlg->receive_data(this);
-
- CAsyncSocket::OnReceive(nErrorCode);
- }
- void CClientSocket::OnConnect(int nErrorCode)
- {
- if(0 != nErrorCode){
- m_pDlg->remove_socket(this);
- }
- }
- void CClientSocket::OnClose(int nErrorCode)
- {
- bError = true;
- CAsyncSocket::OnClose(nErrorCode);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if(m_bClosed){
- return;
- }
- m_pDlg->remove_socket(this);
- m_bClosed = TRUE;
- ShutDown();
-
- }
- IMPLEMENT_DYNAMIC(CClientSocket, CAsyncSocket)
|