📄 tcp.cpp
字号:
// TCP.cpp : implementation file
//
#include "stdafx.h"
#include "TCPIPplugin.h"
#include "TCP.h"
#include "ConfigGen.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
// If any property is changed the value will be set to true.
// used in classwizplugin.cpp if user presses ok.
//
extern bool g_save;
/////////////////////////////////////////////////////////////////////////////
// TCP property page
IMPLEMENT_DYNCREATE(TCP, CPropertyPage)
TCP::TCP() : CPropertyPage(TCP::IDD)
{
//{{AFX_DATA_INIT(TCP)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
InitDefaultTCPSettings();
}
TCP::~TCP()
{
}
void TCP::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(TCP)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
PopulateTCPSettings();
}
BEGIN_MESSAGE_MAP(TCP, CPropertyPage)
//{{AFX_MSG_MAP(TCP)
ON_EN_CHANGE(IDC_TCP_NO_UDP_CONN, OnChangeTcpNoUdpConn)
ON_EN_CHANGE(IDC_TCP_NO_TCP_CONN, OnChangeTcpNoTcpConn)
ON_EN_CHANGE(IDC_TCP_NO_SOCKET_CONN, OnChangeTcpNoSocketConn)
ON_EN_CHANGE(IDC_TCP_NO_LISTEN_CONN, OnChangeTcpNoListenConn)
ON_EN_CHANGE(IDC_TCP_MSS, OnChangeTcpMss)
ON_EN_CHANGE(IDC_TCP_WND, OnChangeTcpWnd)
ON_EN_CHANGE(IDC_ARP_TBSZ, OnChangeArpTbsz)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// TCP message handlers
void TCP::OnChangeTcpNoUdpConn()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CPropertyPage::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
CEdit *pEdit_NumUdpConnections = (CEdit*)GetDlgItem(IDC_TCP_NO_UDP_CONN);
char temp_buf_arr[80];
char *end_ptr;
int o_no_udp_conn= m_no_udp_conn;
if(pEdit_NumUdpConnections != NULL)
{
pEdit_NumUdpConnections->GetWindowText(temp_buf_arr,80);
m_no_udp_conn = strtol(temp_buf_arr,&end_ptr,10);
if(m_no_udp_conn == 0)
{
AfxMessageBox("You will not be able to Create UDP Sockets", MB_ICONWARNING | MB_OK);
}
}
(o_no_udp_conn != m_no_udp_conn) ? g_save = true : 0;
}
void TCP::OnChangeTcpNoTcpConn()
{
CEdit *pEdit_NumTcpConnections = (CEdit*)GetDlgItem(IDC_TCP_NO_TCP_CONN);
char temp_buf_arr[80];
char *end_ptr;
int o_no_tcp_conn = m_no_tcp_conn;
if(pEdit_NumTcpConnections != NULL)
{
pEdit_NumTcpConnections->GetWindowText(temp_buf_arr,80);
m_no_tcp_conn = strtol(temp_buf_arr,&end_ptr,10);
if(m_no_tcp_conn == 0)
{
AfxMessageBox("You will not be able to Create TCP Sockets", MB_ICONWARNING | MB_OK);
}
}
(o_no_tcp_conn != m_no_tcp_conn) ? g_save = true : 0;
}
void TCP::OnChangeTcpNoSocketConn()
{
CEdit *pEdit_NumSockets = (CEdit*)GetDlgItem(IDC_TCP_NO_SOCKET_CONN);
char temp_buf_arr[80];
char *end_ptr;
if(pEdit_NumSockets != NULL)
{
pEdit_NumSockets->GetWindowText(temp_buf_arr,80);
m_no_sockets = strtol(temp_buf_arr,&end_ptr,10);
if(m_no_sockets == 0)
{
AfxMessageBox("Number of Sockets Can not be Zero", MB_ICONEXCLAMATION | MB_ICONERROR | MB_OK);
pEdit_NumSockets->SetFocus();
}
}
}
void TCP::OnChangeTcpNoListenConn()
{
CEdit *pEdit_NumListenConnections = (CEdit*)GetDlgItem(IDC_TCP_NO_LISTEN_CONN);
char temp_buf_arr[80];
char *end_ptr;
int o_no_listen_conn= m_no_listen_conn;
if(pEdit_NumListenConnections != NULL)
{
pEdit_NumListenConnections->GetWindowText(temp_buf_arr,80);
m_no_listen_conn = strtol(temp_buf_arr,&end_ptr,10);
if(m_no_listen_conn == 0)
{
AfxMessageBox("No pending tcp requests", MB_ICONWARNING | MB_OK);
}
}
(o_no_listen_conn != m_no_listen_conn) ? g_save = true : 0;
}
void TCP::OnChangeTcpMss()
{
CEdit *pEdit_TcpMSS = (CEdit*)GetDlgItem(IDC_TCP_MSS);
char temp_buf_arr[80];
char *end_ptr;
int o_tcp_mss = m_tcp_mss;
if(pEdit_TcpMSS != NULL)
{
pEdit_TcpMSS->GetWindowText(temp_buf_arr,80);
m_tcp_mss = strtol(temp_buf_arr,&end_ptr,10);
if(m_tcp_mss == 0)
{
AfxMessageBox("MSS can not be zero", MB_ICONEXCLAMATION | MB_ICONERROR | MB_OK);
pEdit_TcpMSS->SetFocus();
}
}
(o_tcp_mss != m_tcp_mss)? g_save = true : 0;
}
void TCP::OnChangeTcpWnd()
{
CEdit *pEdit_TcpWND = (CEdit*)GetDlgItem(IDC_TCP_WND);
char temp_buf_arr[80];
char *end_ptr;
int o_tcp_wndsz = m_tcp_wndsz;
if(pEdit_TcpWND != NULL)
{
pEdit_TcpWND->GetWindowText(temp_buf_arr,80);
m_tcp_wndsz = strtol(temp_buf_arr,&end_ptr,10);
if(m_tcp_wndsz == 0)
{
AfxMessageBox("Window Size can not be zero", MB_ICONEXCLAMATION | MB_ICONERROR | MB_OK);
pEdit_TcpWND->SetFocus();
}
}
(o_tcp_wndsz != m_tcp_wndsz) ? g_save = true : 0;
}
void TCP::OnChangeArpTbsz()
{
CEdit *pEdit_ArpTableSize = (CEdit*)GetDlgItem(IDC_ARP_TBSZ);
char temp_buf_arr[80];
char *end_ptr;
int o_arp_tbsz = m_arp_tbsz;
if(pEdit_ArpTableSize != NULL)
{
pEdit_ArpTableSize->GetWindowText(temp_buf_arr,80);
m_arp_tbsz = strtol(temp_buf_arr,&end_ptr,10);
if(m_arp_tbsz == 0)
{
AfxMessageBox("ARP table Size can not be zero", MB_ICONEXCLAMATION | MB_ICONERROR | MB_OK);
pEdit_ArpTableSize->SetFocus();
}
}
(o_arp_tbsz != m_arp_tbsz) ? g_save = true : 0;
}
void TCP::InitDefaultTCPSettings()
{
m_no_udp_conn = 8;
m_no_tcp_conn = 16;
m_no_sockets = 32;
m_no_listen_conn = 8;
m_tcp_mss = 1460;
m_tcp_wndsz = 8192;
m_arp_tbsz = 10;
}
void TCP::PopulateTCPSettings()
{
CEdit *pEdit_TCP = (CEdit*)GetDlgItem(IDC_TCP_NO_UDP_CONN);
char temp_buf_arr[80];
// Setup Num UDP connections
//
if(pEdit_TCP != NULL)
{
sprintf(temp_buf_arr,"%d",m_no_udp_conn);
pEdit_TCP->SetWindowText(temp_buf_arr);
}
// Setup Num TCP connections
//
strcpy(temp_buf_arr,"");
pEdit_TCP = (CEdit*)GetDlgItem(IDC_TCP_NO_TCP_CONN);
if(pEdit_TCP != NULL)
{
sprintf(temp_buf_arr,"%d",m_no_tcp_conn);
pEdit_TCP->SetWindowText(temp_buf_arr);
}
// Setup number of sockets
//
strcpy(temp_buf_arr,"");
pEdit_TCP = (CEdit*)GetDlgItem(IDC_TCP_NO_SOCKET_CONN);
if(pEdit_TCP != NULL)
{
sprintf(temp_buf_arr,"%d",m_no_sockets);
pEdit_TCP->SetWindowText(temp_buf_arr);
}
// Setup listen backlog
//
strcpy(temp_buf_arr,"");
pEdit_TCP = (CEdit*)GetDlgItem(IDC_TCP_NO_LISTEN_CONN);
if(pEdit_TCP != NULL)
{
sprintf(temp_buf_arr,"%d",m_no_listen_conn);
pEdit_TCP->SetWindowText(temp_buf_arr);
}
// Setup TCP MSS
//
strcpy(temp_buf_arr,"");
pEdit_TCP = (CEdit*)GetDlgItem(IDC_TCP_MSS);
if(pEdit_TCP != NULL)
{
sprintf(temp_buf_arr,"%d",m_tcp_mss);
pEdit_TCP->SetWindowText(temp_buf_arr);
}
// Setup TCP Window Size
//
strcpy(temp_buf_arr,"");
pEdit_TCP = (CEdit*)GetDlgItem(IDC_TCP_WND);
if(pEdit_TCP != NULL)
{
sprintf(temp_buf_arr,"%d",m_tcp_wndsz);
pEdit_TCP->SetWindowText(temp_buf_arr);
}
// Setup TCP Window Size
//
strcpy(temp_buf_arr,"");
pEdit_TCP = (CEdit*)GetDlgItem(IDC_ARP_TBSZ);
if(pEdit_TCP != NULL)
{
sprintf(temp_buf_arr,"%d",m_arp_tbsz);
pEdit_TCP->SetWindowText(temp_buf_arr);
}
}
bool TCP::StoreTCPHeaderData(ConfigHeaderStruct *cfg_header)
{
cfg_header->tcp_mss = m_tcp_mss;
cfg_header->tcp_wndsz = m_tcp_wndsz;
cfg_header->no_udp_conn = m_no_udp_conn;
cfg_header->no_tcp_conn = m_no_tcp_conn;
cfg_header->no_listen_conn = m_no_listen_conn;
cfg_header->no_sockets = m_no_sockets;
cfg_header->arp_tbsz = m_arp_tbsz;
return true;
}
bool TCP::LoadTCPHeaderData(ConfigHeaderStruct *cfg_header)
{
m_tcp_mss = cfg_header->tcp_mss;
m_tcp_wndsz = cfg_header->tcp_wndsz;
m_no_udp_conn = cfg_header->no_udp_conn;
m_no_tcp_conn = cfg_header->no_tcp_conn;
m_no_listen_conn = cfg_header->no_listen_conn;
m_no_sockets = cfg_header->no_sockets;
m_arp_tbsz = cfg_header->arp_tbsz;
return true;
}
void TCP::OnCancel()
{
CPropertyPage::OnCancel();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -