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

📄 tcp.cpp

📁 lwip tcp/ip 协议栈 adsp BF533 DSP 移植 用 visual dsp++ 编译
💻 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 + -