www.pudn.com > ntshell.rar > 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{ 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 { 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_)