?? sock.cpp
字號:
// sock.cpp : implementation file
//
#include "stdafx.h"
#include "hgsmsend.h"
#include "hgsmsendDlg.h"
#include "sock.h"
#include "inihead.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// sock
extern CHgsmsendDlg *sgd;
SOCKADDR RsockAddr[3];
sock::sock()
{
m_nLength=0;
memset(m_szBuffer,0,sizeof(m_szBuffer));
}
sock::~sock()
{
if (m_hSocket!=INVALID_SOCKET)
Close();
}
// Do not edit the following lines, which are needed by ClassWizard.
#if 0
BEGIN_MESSAGE_MAP(sock, CAsyncSocket)
//{{AFX_MSG_MAP(sock)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
#endif // 0
/////////////////////////////////////////////////////////////////////////////
// sock member functions
void sock::OnAccept(int nErrorCode)
{
BOOL Result=0;
int count=0;
char buffer[1024];
SOCKADDR Asock;
int leng=sizeof(SOCKADDR);
char temptime[20];
memset(temptime,0,sizeof(temptime));
memset(&Asock,0,sizeof(SOCKADDR));
memset(buffer,0,sizeof(buffer));
if (nErrorCode==0)
{
if(!sgd->m_online)
{
Result=Accept(sgd->Rsock,&Asock,&leng);
}
else
{
Clean();
}
if(Result)
{
sprintf(sgd->Client.IP,"%d.%d.%d.%d",(BYTE)Asock.sa_data[2],(BYTE)Asock.sa_data[3],(BYTE)Asock.sa_data[4],(BYTE)Asock.sa_data[5]);
sgd->MakeTime(temptime);
sgd->Client.Time=atol(temptime);
sprintf(buffer,"READ:客戶登錄: %s ",sgd->Client.IP);
sgd->xprintf(buffer,"OK");
sprintf(buffer,"READ:登錄時間: %Ld ",sgd->Client.Time);
sgd->xprintf(buffer,"OK");
sgd->m_online=1;
AsyncSelect(FD_READ|FD_ACCEPT);
}
}
}
void sock::OnReceive(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
// TODO: Add your specialized code here and/or call the base clas
if (nErrorCode==0)
{
m_nLength=ReceiveFrom((void *)m_szBuffer,sizeof(m_szBuffer),(CString &)m_ip,(UINT &)m_port);
if(m_nLength<=0||m_nLength>=2048)
{
sgd->xprintf(" 接收錯誤!!!!!","ERROR!");
return;
}
m_szBuffer[m_nLength]=0;
if(m_port==UDP_PORT_USER)
{
sgd->UdpPortUserRead(m_szBuffer,m_nLength,m_ip);
}
else if (m_port==UDP_PORT_SEND)
{
return;
}
else if (m_port==UDP_PORT_READ)
{
sgd->UdpRead(m_szBuffer,m_nLength,m_ip);
}
else
{
if(this==&sgd->Rsock)
{
sgd->ServerRead(m_szBuffer,m_nLength);
}
else
{
sgd->TcpRead(m_szBuffer,m_nLength);
}
}
}
}
void sock::OnSend(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
char buffer[40];
memset(buffer,0,sizeof(buffer));
SendTo((const void *)m_szBuffer,m_nLength,nHostPort,HostAddress);
m_nLength=0;
memset(m_szBuffer,0,sizeof(m_szBuffer));
AsyncSelect(FD_READ|FD_ACCEPT);
}
void sock::OnConnect(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
char buffer[1024];
if (nErrorCode==0)
{
wsprintf(buffer,"CONNECTED TO SERVER %s ",SERVER_ADR);
sgd->xprintf(buffer,"連接成功");
sgd->m_connect=1;
sgd->Bind_Transmitter();
}
else
{
wsprintf(buffer,"Connect To Server Error");
sgd->xprintf(buffer,"ERROR!");
}
}
void sock::SocketSend(char *buf, int len, UINT port, CString ip)
{
nHostPort=port;
HostAddress=ip;
memset(m_szBuffer,0,sizeof(m_szBuffer));
memcpy(m_szBuffer,buf,len);
m_nLength=len;
AsyncSelect(FD_WRITE);
}
void sock::Clean()
{
sgd->Rsock.ShutDown();
memset(&sgd->Client,0,sizeof(CLIENT));
sgd->m_online=0;
sgd->Rsock.Close();
//AsyncSelect(FD_READ|FD_WRITE|FD_ACCEPT);
AsyncSelect(FD_READ|FD_ACCEPT);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -