📄 timeclientdlg.cpp
字号:
// TimeClientDlg.cpp : implementation file
//
#include "stdafx.h"
#include "TimeClient.h"
#include "TimeClientDlg.h"
#include "Tjfw.h"
#include "Sc.h"
#include "mydebug.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define WM_TRAYNOTIFY WM_USER + 100
//char szAddr[]={"192.168.8.9"};
char szAddr[]={"192.168.8.8"};
TCHAR g_szDebugBuffer[256];//sdfdsf
void WriteError( char *err)//sdfdsf
{
FILE *f2;
CTime t=CTime::GetCurrentTime();
char str[100];
sprintf(str,"c:\\e%04d%02d%02d-%02d%02d%02d.txt",
t.GetYear(),
t.GetMonth(),
t.GetDay(),
t.GetHour(),
t.GetMinute(),
t.GetSecond());
if((f2=fopen(str,"at"))==NULL)
{
return;
}
fprintf(f2,"expt: %s\n",err);
fclose(f2);
};
/////////////////////////////////////////////////////////////////////////////
// CTimeClientDlg dialog
CTimeClientDlg::CTimeClientDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTimeClientDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CTimeClientDlg)
m_strPortc = _T("");
m_strPort = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_open_application = TRUE;
m_hIcons[0] = AfxGetApp()->LoadIcon(IDR_HAPPY);
m_hIcons[1] = AfxGetApp()->LoadIcon(IDR_SAD);
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_pSocket = NULL;
m_bIsConnect = FALSE;
m_pListenSocket = NULL;
for( int i=0; i<MAX_CLIENT; i++ )
{
m_pzClientSocket[i] = NULL;
}
}
void CTimeClientDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTimeClientDlg)
DDX_Control(pDX, IDC_SERVER_IPADDRESS, m_ipAddr);
DDX_Control(pDX, IDC_LIST_CLIENT, m_listClient);
DDX_Control(pDX, IDC_LIST_MSG, m_listMsg);
DDX_Control(pDX, IDC_IPADDRESS, m_ipAddrc);
DDX_Text(pDX, IDC_EDIT_PORT, m_strPortc);
DDX_Text(pDX, IDC_EDIT_PORTS, m_strPort);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTimeClientDlg, CDialog)
//{{AFX_MSG_MAP(CTimeClientDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON_DELETE, OnButtonDelete)
ON_BN_CLICKED(IDC_BUTTON_CONNECT, OnButtonConnect)
ON_BN_CLICKED(IDC_BUTTON_CLOSE, OnButtonClose)
ON_BN_CLICKED(IDC_BUTTON_CREATE, OnButtonCreate)
ON_WM_TIMER()
ON_WM_DESTROY()
ON_COMMAND(ID_OPEN_APPLICATION, OnOpenApplication)
ON_COMMAND(ID_APPLICATION_EXIT, OnApplicationExit)
ON_WM_CLOSE()
ON_COMMAND(ID_tj, Ontj)
ON_COMMAND(SH_SC, OnSc)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_TRAYNOTIFY, OnTrayNotification)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTimeClientDlg message handlers
BOOL CTimeClientDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
m_dwServerIpAddress = GetLoaclIpAddress();
// char fn[100];
// sprintf(fn,"%u",m_dwServerIpAddress);
// MessageBox(fn);
m_ipAddrc.SetAddress(m_dwServerIpAddress);
m_strPortc.Format("%d", _TIMERSVR_PORT);
UpdateData( FALSE );
m_ipAddr.SetAddress(GetLoaclIpAddress());
m_strPort.Format("%d", _TIMERSVR_PORTS);
DWORD dwStyle = ::SendMessage (m_listClient.m_hWnd, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
dwStyle |= LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES;
::SendMessage (m_listClient.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle);
m_listClient.InsertColumn(0, "ID", LVCFMT_CENTER, 40 );
m_listClient.InsertColumn(1, "ADDR", LVCFMT_CENTER, 120 );
m_listClient.InsertColumn(2, "Login", LVCFMT_CENTER, 60 );
m_listClient.InsertColumn(3, "地点", LVCFMT_CENTER, 120 );
m_listClient.InsertColumn(4, "服务", LVCFMT_CENTER, 60 );
char buffer[8];
for( int i=0; i<MAX_CLIENT; i++ )
{
sprintf( buffer, "%d", i );
m_listClient.InsertItem( i, buffer );
}
CTime nowTime = CTime::GetCurrentTime();
m_strCurrentTime.Format( "%04d-%02d-%02d %02d:%02d:%02d",
nowTime.GetYear(),
nowTime.GetMonth(),
nowTime.GetDay(),
nowTime.GetHour(),
nowTime.GetMinute(),
nowTime.GetSecond() );
// m_editTime.SetWindowText( (LPCTSTR)m_strCurrentTime );
m_pListenSocket = CreateSocket();
if (m_pListenSocket->Create(_TIMERSVR_PORTS))
{
if (!m_pListenSocket->Listen())
{
char buffer[64];
sprintf( buffer, "代理侦听错误:%d", GetLastError() );
msg_put(buffer);
DeleteSocket(&m_pListenSocket );
}
}
else
{
char buffer[64];
sprintf( buffer, "代理网络错误:%d", GetLastError() );
msg_put(buffer);
DeleteSocket(&m_pListenSocket );
}
UpdateData( FALSE );
// OnButtonCreate(); //生成 111111111111111111111111111111111111111111111111
// OnButtonConnect();
SetTimer(IDD_TIMER,10000,NULL);//十秒
SetTimer(IDD_TIMER2,20000,NULL);//十秒
m_open_application = TRUE;
m_animIcon.SetImageList(IDB_ANIM_IMGLIST,4,RGB(0,0,0));
if (!m_TrayIcon.Create(this, IDR_TRAYPOPUP, _T("IP代理网关"), m_hIcons, 2, 500, WM_TRAYNOTIFY))
{
MessageBox(_T("创建应用程序失败!"), "IP代理", MB_OK | MB_ICONSTOP);
return -1;
}
AfxGetApp()->m_pMainWnd->SetWindowText("IP代理网关 Writen By WQ QQ:7175858") ;
k1=0;
// char q[16];
// sprintf(q,"%d.%d.%d.%d",222,34,89,39);
// m_listClient.SetItemText( 0, 1, q );
// m_listClient.SetItemText( 0, 2, "Login" );//显IP
// m_listClient.SetItemText( 0, 3, "长春讯达" );
// m_listClient.SetItemText( 0, 4, "用户" );
return TRUE; // return TRUE unless you set the focus to a control
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CTimeClientDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CTimeClientDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CTimeClientDlg::OnCancel()
{
// TODO: Add extra cleanup here
// CDialog::OnCancel();
}
void CTimeClientDlg::OnOK()
{
}
void CTimeClientDlg::OnButtonCreate() //生成 111111111111111111111111111111111111111111111111
{
if(m_pSocket)
{
return;
}
m_pSocket = new CTupSocket(this);
if (!m_pSocket->Create())
{
char buffer[64];
sprintf( buffer, "网关网络错误:%d", GetLastError() );
msg_put(buffer);
delete m_pSocket;
m_pSocket = NULL;
}
}
int istryConnect=0;
void CTimeClientDlg::OnButtonConnect() //连接 2222222222222222222222222222222222222222222222222222222
{
if( !m_pSocket )
{
return;
}
if(m_bIsConnect)
{
return ;
}
// char szAddr[16];
/* UpdateData( TRUE );
m_ipAddrc.GetAddress( m_dwServerIpAddress );
sprintf( szAddr, "%d.%d.%d.%d",
0xff&(m_dwServerIpAddress>>24),
0xff&(m_dwServerIpAddress>>16),
0xff&(m_dwServerIpAddress>>8),
0xff&(m_dwServerIpAddress) );
*/
// sprintf(szAddr,"192.168.8.9");
// sprintf(szAddr,"192.168.1.66");//临时
if(!m_pSocket->Connect(szAddr, atoi( (LPCTSTR)m_strPortc)) )
{
int iLastError = GetLastError();
if( iLastError == WSAEWOULDBLOCK )
{
msg_put("正在连接网关……" );
}
else
{
char buffer[64];
sprintf( buffer, "服务器连接错误:%d", iLastError );
msg_put(buffer);
m_bIsConnect = FALSE;
}
}
else
{
msg_put("已连接网关" );
m_bIsConnect = TRUE;
}
}
void CTimeClientDlg::OnButtonClose() //关闭 333333333333333333333333333333333333333333333333333333
{
if(m_pSocket)
{
m_pSocket->Close();
delete m_pSocket;
m_pSocket = NULL;
m_bIsConnect = FALSE;
}
}
void CTimeClientDlg::OnButtonDelete() //删除 444444444444444444444444444444444444444444444444
{
if(m_pSocket)
{
m_pSocket->Close();
delete m_pSocket;
m_pSocket = NULL;
m_bIsConnect = FALSE;
}
}
void CTimeClientDlg::OnSocketConnect(CTupSocket * pSocket, int nErrorCode)
{
if(nErrorCode==0)
{
m_bIsConnect = TRUE;
}
else
{
char buffer[64];
sprintf( buffer, "服务器连接失败:%d", nErrorCode );
msg_put(buffer);
m_bIsConnect = FALSE;
}
}
void CTimeClientDlg::msg_put(char * msg)
{
char ss[40];
if( m_listMsg.GetCount() > 100 )
{
m_listMsg.DeleteString(0);
}
CTime time=CTime::GetCurrentTime();;
sprintf(ss,"%d:%d:%d",time.GetHour(),time.GetMinute(),time.GetSecond());
m_listMsg.SetCurSel(m_listMsg.AddString(ss));
sprintf(g_szRecvBuffer,"%s",msg);
m_listMsg.SetCurSel(m_listMsg.AddString(g_szRecvBuffer) );
};
char g_szRecvBuffer[16];
void
CTimeClientDlg::OnSocketReceive(CTupSocket * pSocket, int nErrorCode)
{
int result = pSocket->Receive( &g_szRecvBuffer[0],16);
if( result <= 0 )
{
OnSocketClose(pSocket, nErrorCode);
}
else
{
char clip[20];
long is=0;
bool m_pd;
pSocket->GetConnectIpAddr(clip);
char s[12],ss[10];
//加个函数,判断是否存在,如存在,跳过,如不存在继续
if(result>=8)
{
TRY_BEGIN
m_pd=PD(g_szRecvBuffer,clip);
TRY_END
if(m_pd) //没有相同的
{
// msg_put("没有相同的");
for(int n=0; n<MAX_CLIENT; n++ )//加IP
{
if( m_pzClientSocket[n] == pSocket )
{
sprintf(s,"%s",g_szRecvBuffer);
sprintf(ss,"%s","服务");
m_listClient.SetItemText( n, 1, clip );
m_listClient.SetItemText( n, 2, "Login" );//显IP
m_listClient.SetItemText( n, 3, s );
m_listClient.SetItemText( n, 4, ss );
sprintf(msg,"%s<-服务","服务器来的包");
msg_put(msg);
break;
}
}
}
else
return;
}
else if(result<8)
{
long qq=atol(g_szRecvBuffer);
TRY_BEGIN
Ddq(qq,pSocket,clip);
TRY_END
char ss[10];
sprintf(ss,"%d",qq);
msg_put(ss);
}
else
return;
}
}
//struct CSendPacek //客户端来的包
//struct CRecvPacket //服务器来的包
void
CTimeClientDlg::OnSocketClose(CTupSocket * pSocket, int nErrorCode)
{
// sprintf(g_szRecvBuffer,"关闭=========");
// m_listMsg.SetCurSel(m_listMsg.AddString(g_szRecvBuffer) );
TRY_BEGIN
int is=0;
char ss[100];
for( int i=0; i<MAX_CLIENT; i++ )
{
if( pSocket == m_pzClientSocket[i] )
{
is=1;
m_pzClientSocket[i] = NULL;
m_listClient.SetItemText(i,1," ");
m_listClient.SetItemText(i,2," ");
break;
}
}
if(is==0)
if(m_pSocket)
{
m_pSocket->Close();
DeleteSocket( &pSocket );//好象是关服务器
m_pSocket = NULL;
m_bIsConnect = FALSE;
m_bIsConnect = FALSE;
m_pzClientSocket[i] = NULL;
m_listClient.SetItemText(i,1," ");
m_listClient.SetItemText(i,2," ");
}
TRY_END
}
void
CTimeClientDlg::DeleteSocket(CTupSocket** ppSocket)
{
if( ppSocket )
{
if( *ppSocket )
{
delete *ppSocket;
*ppSocket = NULL;
}
}
}
void
CTimeClientDlg::OnSocketAccept(CTupSocket * pSocket, int nErrorCode)//
{
TRY_BEGIN
// msg_put("接收====");
for( int i=0; i<MAX_CLIENT; i++ )
{
if( m_pzClientSocket[i] == NULL )
{
CTupSocket* pClientSocket = CreateSocket();
if (pSocket->Accept(*pClientSocket))
{
m_pzClientSocket[i] = pClientSocket;
// m_listClient.SetItemText( i, 2, "Login" );
// m_lOffset[i]=-1; //把新登陆的两个位置赋为空。
// m_lRenewOffset[i]=-1;
}
else
{
DeleteSocket( &pClientSocket );
}
break;
}
}
TRY_END
}
CTupSocket*
CTimeClientDlg::CreateSocket()
{
return new CTupSocket( this );
}
void CTimeClientDlg::OnTimer(UINT nIDEvent)
{
/*
long flag=1;
switch(nIDEvent)
{
case IDD_TIMER2://最小化。
/* if(m_open_application)
{
m_open_application = FALSE;
AfxGetApp()->m_pMainWnd->ShowWindow( SW_MINIMIZE );
AfxGetApp()->m_pMainWnd->UpdateWindow();
AfxGetApp()->m_pMainWnd->ShowWindow( SW_HIDE );
AfxGetApp()->m_pMainWnd->UpdateWindow();
}*/
/*
break;
case IDD_TIMER:
if(!m_bIsConnect)//自动登陆服务器
{
// OnButtonCreate(); //生成
// OnButtonConnect();//联接
;
}
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -