📄 portproxy.h
字号:
// portproxy.h: interface for the CPortProxy class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_PORTPROXY_H__7C847D98_2DBE_42AA_93BB_26738FE3B283__INCLUDED_)
#define AFX_PORTPROXY_H__7C847D98_2DBE_42AA_93BB_26738FE3B283__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define PORT_MAX_CONNECT 20
#define WM_ADDPROXY WM_USER + 1
class CAddProxy : public CDialogImpl<CAddProxy>
{
public:
enum { IDD = IDD_ADDPROXY };
BEGIN_MSG_MAP(CAddProxy)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
MESSAGE_HANDLER(WM_CLOSE, OnClose)
COMMAND_ID_HANDLER(IDOK, OnAddProxyBtn)
COMMAND_ID_HANDLER(IDCLOSE, OnHideDlgBtn)
END_MSG_MAP()
// Handler prototypes (uncomment arguments if needed):
// LRESULT MessageHandler(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
// LRESULT CommandHandler(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
// LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/)
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/)
{
SetDlgItemText(IDC_PROXYADDR, "127.0.0.1");
return TRUE;
}
LRESULT OnClose(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/)
{
ShowWindow(SW_HIDE);
return TRUE;
}
LRESULT OnAddProxyBtn(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
::SendMessage(GetParent(), WM_ADDPROXY, 0, 0);
return TRUE;
}
LRESULT OnHideDlgBtn(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
ShowWindow(SW_HIDE);
return TRUE;
}
};
class CPortProxy : public CDialogImpl<CPortProxy>
{
public:
enum { IDD = IDD_PORTPROXY };
CPortProxy();
virtual ~CPortProxy();
BEGIN_MSG_MAP(CPortProxy)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
MESSAGE_HANDLER(WM_SIZE, OnSize)
MESSAGE_HANDLER(WM_SOCKET, OnSocket)
NOTIFY_ID_HANDLER(IDC_PROXYLIST, OnProxyList)
COMMAND_ID_HANDLER(IDM_ADDPROXY, OnAddProxy)
ALT_MSG_MAP(1)
COMMAND_ID_HANDLER(IDOK, OnAddProxyBtn)
END_MSG_MAP()
// Handler prototypes (uncomment arguments if needed):
// LRESULT MessageHandler(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
// LRESULT CommandHandler(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
// LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/)
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/);
LRESULT OnSize(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/);
LRESULT OnSocket(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
LRESULT OnProxyList(int wParam, LPNMHDR pNMHDR, BOOL& /*bHandled*/);
LRESULT OnAddProxy(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnAddProxyBtn(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
private:
typedef struct _PROXY_LIST
{
USHORT nLocalPort;
DWORD dwTargetHost;
USHORT nTargetPort;
SOCKET sListen;
ULONG nTotal;
ULONG nSend;
ULONG nRecv;
ULONG nSendBytes;
ULONG nRecvBytes;
HANDLE hWorkThread;
HANDLE hCtrlEvent1;
HANDLE hCtrlEvent2;
SOCKET local_sock;
SOCKET remote_sock;
struct _PROXY_LIST *pNext;
} PROXY_LIST, *PPROXY_LIST;
typedef struct _OPEN_REMOTE_PORT
{
HANDLE hEvent;
SOCKET s;
} OPEN_REMOTE_PORT, *POPEN_REMOTE_PORT;
REQUEST_CONNECT rc;
bool connwait;
PWND_INIT_PARAM pwip;
CListViewCtrl m_hProxyList;
PPROXY_LIST ppl;
CAddProxy m_hAddProxyDlg;
BOOL SockProxyStart(USHORT ListenPort, char *RemoteHost, USHORT RemotePort);
static DWORD WINAPI SockProxyThread(LPVOID lpParam);
SOCKET OpenLocalPort(USHORT nPort);
SOCKET OpenRemotePort(char *lpHost, USHORT nPort);
static void OpenPortSuccess(SOCKET s, LPVOID param = NULL);
};
#endif // !defined(AFX_PORTPROXY_H__7C847D98_2DBE_42AA_93BB_26738FE3B283__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -