⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timeclientdlg.cpp

📁 不断发送IP地址
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -