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

📄 testdlg.cpp

📁 socket代理的C++源码,实现了代理服务器的大部分功能
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		
	case NET_UDPSOCKS5SEND:
		TRACE( "\nUDP socket using socks5 send message receive." );
		break;

	default:
		break;
	}

	return NULL;
}

void CTestDlg::OnBnClickedopttcp()
{
	GetDlgItem(IDC_lblTCPMode)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_optServe)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_optClient)->ShowWindow( SW_SHOW );

	GetDlgItem(IDC_chkGroup)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_optRoot)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_optLeaf)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_lblGroup)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_ipGroup)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_chkProxy)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_lblProxyIP)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_ipProxy)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_lblProxyPort)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_txtProxyPort)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_chkCheck)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_lblProxyUser)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_txtProxyUser)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_lblProxyPass)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_txtProxyPass)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_lblProxyAlloPort)->ShowWindow( SW_HIDE );

	GetDlgItem(IDC_btnOpen)->ShowWindow( SW_HIDE );

	((CButton*)GetDlgItem(IDC_optServe))->SetCheck( 0 );
	((CButton*)GetDlgItem(IDC_optClient))->SetCheck( 1 );
	((CButton*)GetDlgItem(IDC_optByte))->SetCheck( 0 );
	((CButton*)GetDlgItem(IDC_optText))->SetCheck( 1 );
	((CButton*)GetDlgItem(IDC_optRoot))->SetCheck( 0 );
	((CButton*)GetDlgItem(IDC_optLeaf))->SetCheck( 1 );

	((CButton*)GetDlgItem(IDC_chkProxy))->SetCheck( 0 );
	((CButton*)GetDlgItem(IDC_chkCheck))->SetCheck( 0 );
	((CButton*)GetDlgItem(IDC_chkGroup))->SetCheck( 0 );

	OnBnClickedoptclient();

	m_bSocMode = true;
}

void CTestDlg::OnBnClickedoptudp()
{
	GetDlgItem(IDC_lblTCPMode)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_optServe)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_optClient)->ShowWindow( SW_HIDE );

	GetDlgItem(IDC_chkGroup)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_optRoot)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_optLeaf)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_lblGroup)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_ipGroup)->ShowWindow( SW_SHOW );

	GetDlgItem(IDC_lblLocalPort)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_txtLocalPort)->ShowWindow( SW_SHOW );

	GetDlgItem(IDC_lblIP)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_ipRemote)->ShowWindow( SW_SHOW );

	GetDlgItem(IDC_lblRemotePort)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_txtRemotePort)->ShowWindow( SW_SHOW );

	GetDlgItem(IDC_chkProxy)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_lblProxyIP)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_ipProxy)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_lblProxyPort)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_txtProxyPort)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_chkCheck)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_lblProxyUser)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_txtProxyUser)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_lblProxyPass)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_txtProxyPass)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_lblProxyAlloPort)->ShowWindow( SW_SHOW );

	GetDlgItem(IDC_btnListen)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_btnConnect)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_btnOpen)->ShowWindow( SW_SHOW );

	GetDlgItem(IDC_lblSubSoc)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_txtSocSub)->ShowWindow( SW_HIDE );
	
	((CButton*)GetDlgItem(IDC_optServe))->SetCheck( 0 );
	((CButton*)GetDlgItem(IDC_optClient))->SetCheck( 1 );
	((CButton*)GetDlgItem(IDC_optByte))->SetCheck( 0 );
	((CButton*)GetDlgItem(IDC_optText))->SetCheck( 1 );
	((CButton*)GetDlgItem(IDC_optRoot))->SetCheck( 0 );
	((CButton*)GetDlgItem(IDC_optLeaf))->SetCheck( 1 );

	((CButton*)GetDlgItem(IDC_chkProxy))->SetCheck( 0 );
	((CButton*)GetDlgItem(IDC_chkCheck))->SetCheck( 0 );
	((CButton*)GetDlgItem(IDC_chkGroup))->SetCheck( 0 );

	OnBnClickedchkcheck();
	OnBnClickedchkproxy();
	OnBnClickedchkgroup();
	OnBnClickedchkgroup();

	m_bSocMode = false;
}

void CTestDlg::OnBnClickedoptserve()
{
	GetDlgItem(IDC_btnListen)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_btnConnect)->ShowWindow( SW_HIDE );

	GetDlgItem(IDC_lblLocalPort)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_txtLocalPort)->ShowWindow( SW_SHOW );

	GetDlgItem(IDC_lblRemotePort)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_txtRemotePort)->ShowWindow( SW_HIDE );

	GetDlgItem(IDC_lblSubSoc)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_txtSocSub)->ShowWindow( SW_SHOW );
	
	GetDlgItem(IDC_lblIP)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_ipRemote)->ShowWindow( SW_HIDE );

	m_bTCPMode = true;
}

void CTestDlg::OnBnClickedoptclient()
{
	GetDlgItem(IDC_btnListen)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_btnConnect)->ShowWindow( SW_SHOW );

	GetDlgItem(IDC_lblLocalPort)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_txtLocalPort)->ShowWindow( SW_SHOW );

	GetDlgItem(IDC_lblRemotePort)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_txtRemotePort)->ShowWindow( SW_SHOW );

	GetDlgItem(IDC_lblSubSoc)->ShowWindow( SW_HIDE );
	GetDlgItem(IDC_txtSocSub)->ShowWindow( SW_HIDE );
	
	GetDlgItem(IDC_lblIP)->ShowWindow( SW_SHOW );
	GetDlgItem(IDC_ipRemote)->ShowWindow( SW_SHOW );

	m_bTCPMode = false;
}

void CTestDlg::OnBnClickedopttext()
{
	return;
}

void CTestDlg::OnBnClickedoptbyte()
{
	return;
}

void CTestDlg::OnBnClickedchkgroup()
{
	if( ((CButton*)GetDlgItem(IDC_chkGroup))->GetCheck() )
	{
		GetDlgItem(IDC_chkProxy)->EnableWindow( false );
		GetDlgItem(IDC_lblProxyIP)->EnableWindow( false );
		GetDlgItem(IDC_ipProxy)->EnableWindow( false );
		GetDlgItem(IDC_lblProxyPort)->EnableWindow( false );
		GetDlgItem(IDC_txtProxyPort)->EnableWindow( false );
		GetDlgItem(IDC_chkCheck)->EnableWindow( false );
		GetDlgItem(IDC_lblProxyUser)->EnableWindow( false );
		GetDlgItem(IDC_txtProxyUser)->EnableWindow( false );
		GetDlgItem(IDC_lblProxyPass)->EnableWindow( false );
		GetDlgItem(IDC_txtProxyPass)->EnableWindow( false );

		GetDlgItem(IDC_optRoot)->EnableWindow( true );
		GetDlgItem(IDC_optLeaf)->EnableWindow( true );
		GetDlgItem(IDC_lblGroup)->EnableWindow( true );
		GetDlgItem(IDC_ipGroup)->EnableWindow( true );
	}
	else
	{
		GetDlgItem(IDC_chkProxy)->EnableWindow( true );
		if( ((CButton*)GetDlgItem(IDC_chkProxy))->GetCheck() )
		{
			GetDlgItem(IDC_lblProxyIP)->EnableWindow( true );
			GetDlgItem(IDC_ipProxy)->EnableWindow( true );
			GetDlgItem(IDC_lblProxyPort)->EnableWindow( true );
			GetDlgItem(IDC_txtProxyPort)->EnableWindow( true );

			GetDlgItem(IDC_chkCheck)->EnableWindow( true );
			if( ((CButton*)GetDlgItem(IDC_chkCheck))->GetCheck() )
			{
				GetDlgItem(IDC_lblProxyUser)->EnableWindow( true );
				GetDlgItem(IDC_txtProxyUser)->EnableWindow( true );
				GetDlgItem(IDC_lblProxyPass)->EnableWindow( true );
				GetDlgItem(IDC_txtProxyPass)->EnableWindow( true );
			}
			else
			{
				GetDlgItem(IDC_lblProxyUser)->EnableWindow( false );
				GetDlgItem(IDC_txtProxyUser)->EnableWindow( false );
				GetDlgItem(IDC_lblProxyPass)->EnableWindow( false );
				GetDlgItem(IDC_txtProxyPass)->EnableWindow( false );
			}
		}
		else
		{
			GetDlgItem(IDC_lblProxyIP)->EnableWindow( false );
			GetDlgItem(IDC_ipProxy)->EnableWindow( false );
			GetDlgItem(IDC_lblProxyPort)->EnableWindow( false );
			GetDlgItem(IDC_txtProxyPort)->EnableWindow( false );
			
			GetDlgItem(IDC_chkCheck)->EnableWindow( false );
			GetDlgItem(IDC_lblProxyUser)->EnableWindow( false );
			GetDlgItem(IDC_txtProxyUser)->EnableWindow( false );
			GetDlgItem(IDC_lblProxyPass)->EnableWindow( false );
			GetDlgItem(IDC_txtProxyPass)->EnableWindow( false );
		}

		GetDlgItem(IDC_optRoot)->EnableWindow( false );
		GetDlgItem(IDC_optLeaf)->EnableWindow( false );
		GetDlgItem(IDC_lblGroup)->EnableWindow( false );
		GetDlgItem(IDC_ipGroup)->EnableWindow( false );
	}
}

void CTestDlg::OnBnClickedoptroot()
{
	return;
}

void CTestDlg::OnBnClickedoptleaf()
{
	return;
}

void CTestDlg::OnBnClickedchkproxy()
{
	if( ((CButton*)GetDlgItem(IDC_chkProxy))->GetCheck() )
	{
		GetDlgItem(IDC_chkGroup)->EnableWindow( false );
		GetDlgItem(IDC_optRoot)->EnableWindow( false );
		GetDlgItem(IDC_optLeaf)->EnableWindow( false );
		GetDlgItem(IDC_lblGroup)->EnableWindow( false );
		GetDlgItem(IDC_ipGroup)->EnableWindow( false );

		GetDlgItem(IDC_lblProxyIP)->EnableWindow( true );
		GetDlgItem(IDC_ipProxy)->EnableWindow( true );
		GetDlgItem(IDC_chkCheck)->EnableWindow( true );
		GetDlgItem(IDC_lblProxyPort)->EnableWindow( true );
		GetDlgItem(IDC_txtProxyPort)->EnableWindow( true );
		((CButton*)GetDlgItem(IDC_chkCheck))->SetCheck(0);
		OnBnClickedchkcheck();
	}
	else
	{
		GetDlgItem(IDC_chkGroup)->EnableWindow( true );
		if( ((CButton*)GetDlgItem(IDC_chkGroup))->GetCheck() )
		{
			GetDlgItem(IDC_optRoot)->EnableWindow( true );
			GetDlgItem(IDC_optLeaf)->EnableWindow( true );
			GetDlgItem(IDC_lblGroup)->EnableWindow( true );
			GetDlgItem(IDC_ipGroup)->EnableWindow( true );
		}
		else
		{
			GetDlgItem(IDC_optRoot)->EnableWindow( false );
			GetDlgItem(IDC_optLeaf)->EnableWindow( false );
			GetDlgItem(IDC_lblGroup)->EnableWindow( false );
			GetDlgItem(IDC_ipGroup)->EnableWindow( false );
		}

		GetDlgItem(IDC_lblProxyIP)->EnableWindow( false );
		GetDlgItem(IDC_ipProxy)->EnableWindow( false );
		GetDlgItem(IDC_chkCheck)->EnableWindow( false );
		GetDlgItem(IDC_lblProxyPort)->EnableWindow( false );
		GetDlgItem(IDC_txtProxyPort)->EnableWindow( false );
		((CButton*)GetDlgItem(IDC_chkCheck))->SetCheck(0);
		OnBnClickedchkcheck();
	}
}

void CTestDlg::OnBnClickedchkcheck()
{
	if( ((CButton*)GetDlgItem(IDC_chkCheck))->GetCheck() )
	{
		GetDlgItem(IDC_lblProxyUser)->EnableWindow( true );
		GetDlgItem(IDC_txtProxyUser)->EnableWindow( true );
		GetDlgItem(IDC_lblProxyPass)->EnableWindow( true );
		GetDlgItem(IDC_txtProxyPass)->EnableWindow( true );
	}
	else
	{
		GetDlgItem(IDC_lblProxyUser)->EnableWindow( false );
		GetDlgItem(IDC_txtProxyUser)->EnableWindow( false );
		GetDlgItem(IDC_lblProxyPass)->EnableWindow( false );
		GetDlgItem(IDC_txtProxyPass)->EnableWindow( false );
	}
}

void CTestDlg::OnBnClickedbtnlisten()
{
	CString strLocalPort;

	if( m_bOpen )
	{
		MessageBox( "socket已经打开!", "提示" );
		return;
	}

	GetDlgItem(IDC_txtLocalPort)->GetWindowText( strLocalPort );

	socServe.SetBufferLen( 8192 );
	socServe.SetSocketNotify( m_hWnd, WM_NETMES );
	if( !socServe.OpenSocket( atoi( strLocalPort ) ) )
	{
		m_bOpen = true;
	}
	else
	{
		MessageBox( "服务socket打开失败!", "错误" );
		return;
	}

	GetDlgItem(IDC_lblMode)->EnableWindow( false );
	GetDlgItem(IDC_optTCP)->EnableWindow( false );
	GetDlgItem(IDC_optUDP)->EnableWindow( false );
	
	GetDlgItem(IDC_lblTCPMode)->EnableWindow( false );
	GetDlgItem(IDC_optServe)->EnableWindow( false );
	GetDlgItem(IDC_optClient)->EnableWindow( false );

	GetDlgItem(IDC_btnOpen)->EnableWindow( false );
	GetDlgItem(IDC_btnConnect)->EnableWindow( false );
	GetDlgItem(IDC_btnListen)->EnableWindow( false );
}

void CTestDlg::OnBnClickedbtnconnect()
{
	BYTE pucIP[4];
	int nRemotePort;
	int nLocalPort;
	CString strRemotePort;
	CString strLocalPort;
	
	if( m_bOpen )
	{
		MessageBox( "socket已经打开!", "提示" );
		return;
	}

	GetDlgItem(IDC_txtLocalPort)->GetWindowText( strLocalPort );
	GetDlgItem(IDC_txtRemotePort)->GetWindowText( strRemotePort );
	nRemotePort = atoi( strRemotePort.GetBuffer( strRemotePort.GetLength() ) );
	nLocalPort = atoi( strLocalPort.GetBuffer( strLocalPort.GetLength() ) );
	
	((CIPAddressCtrl*)GetDlgItem(IDC_ipRemote))->GetAddress( pucIP[0], pucIP[1], pucIP[2], pucIP[3] );

	socClient.SetBufferLen( 8192 );
	socClient.SetSocketNotify( m_hWnd, WM_NETMES );

	if( !socClient.OpenSocket( pucIP, nRemotePort, nLocalPort ) )
	{
		m_bOpen = true;
	}
	else
	{
		MessageBox( "客户socket打开失败!", "错误" );
		return;
	}
	
	GetDlgItem(IDC_lblMode)->EnableWindow( false );
	GetDlgItem(IDC_optTCP)->EnableWindow( false );
	GetDlgItem(IDC_optUDP)->EnableWindow( false );
	
	GetDlgItem(IDC_lblTCPMode)->EnableWindow( false );
	GetDlgItem(IDC_optServe)->EnableWindow( false );
	GetDlgItem(IDC_optClient)->EnableWindow( false );
	
	GetDlgItem(IDC_btnOpen)->EnableWindow( false );
	GetDlgItem(IDC_btnConnect)->EnableWindow( false );
	GetDlgItem(IDC_btnListen)->EnableWindow( false );
}

void CTestDlg::OnBnClickedbtnopen()
{
	BYTE pucIP[4];

	CString strLocalPort;
	CString strProxyPort;
	CString strProxyAlloPort;

	CString strUser;
	CString strPass;

	if( m_bOpen )
	{
		MessageBox( "socket已经打开!", "提示" );
		return;
	}

	GetDlgItem(IDC_txtLocalPort)->GetWindowText( strLocalPort );
	
	socUDP.SetBufferLen( 4096 );
	socUDP.SetSocketNotify( m_hWnd, WM_NETMES );

	socSocks5.SetBufferLen( 4096 );
	socSocks5.SetSocketNotify( m_hWnd, WM_NETMES );

	if( ((CButton*)GetDlgItem(IDC_chkProxy))->GetCheck() )
	{
		GetDlgItem(IDC_txtProxyPort)->GetWindowText( strProxyPort );
		((CIPAddressCtrl*)GetDlgItem(IDC_ipProxy))->GetAddress( 
			pucIP[0], pucIP[1], pucIP[2], pucIP[3] );
		if( ((CButton*)GetDlgItem(IDC_chkCheck))->GetCheck() )
		{
			GetDlgItem(IDC_txtProxyUser)->GetWindowText( strUser );
			GetDlgItem(IDC_txtProxyPass)->GetWindowText( strPass );
			if( !socSocks5.OpenSocket( pucIP, atoi( strProxyPort ), atoi( strLocalPort ),
				NULL, strUser, strPass ) )
			{
				m_bOpen = true;
				m_bUDPMode = false;
			}
			else
			{
				MessageBox( "UDP socket using socks 5打开失败!", "错误" );
				return;
			}
		}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -