// TcpClientDlg.cpp : implementation file
//
#include "stdafx.h"
#include "TcpClient.h"
#include "ClientSkt.h"
#include "TcpClientDlg.h"
#include "common.h"
#include "About.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define LINK_NUM 250
/////////////////////////////////////////////////////////////////////////////
// CTcpClientDlg dialog
CTcpClientDlg::CTcpClientDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTcpClientDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CTcpClientDlg)
m_nPort = 5555;
m_strIp = _T("114.255.162.23");
m_strSenddata = _T("1111_My QQ is 709861673");
m_chk2 = FALSE;
m_chk1 = FALSE;
//}}AFX_DATA_INIT
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CTcpClientDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTcpClientDlg)
DDX_Control(pDX, IDC_EDIT_RCVDATA, m_edit_rcvdata);
DDX_Text(pDX, IDC_PORT, m_nPort);
DDX_Text(pDX, IDC_IP, m_strIp);
DDX_Text(pDX, IDC_EDIT_SENDDATA, m_strSenddata);
DDX_Check(pDX, IDC_CHECK2, m_chk2);
DDX_Check(pDX, IDC_CHECK1, m_chk1);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTcpClientDlg, CDialog)
//{{AFX_MSG_MAP(CTcpClientDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BTN_CLS, OnBtnCls)
ON_BN_CLICKED(IDC_BTN_DELETE, OnBtnDelete)
ON_BN_CLICKED(IDC_BTN_SEND, OnBtnSend)
ON_MESSAGE(WM_MY_MESSAGE, OnMyMsg) //复制这里
ON_WM_CLOSE()
ON_WM_SHOWWINDOW()
ON_BN_CLICKED(IDC_B_CLEAR, OnBClear)
ON_BN_CLICKED(IDC_B_CLR, OnBClr)
ON_BN_CLICKED(IDC_B_CLR_R, OnBClrR)
ON_BN_CLICKED(IDC_CHECK2, OnCheck2)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTcpClientDlg message handlers
int gCnt;
BOOL CTcpClientDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
m_pSkt= NULL; // 设为空指针。
SetTimer(1,5,NULL);
gCnt = 200;
m_nSnd = 0;
m_nRcv = 0;
return TRUE; // return TRUE unless you set the focus to a control
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CTcpClientDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
HCURSOR CTcpClientDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CTcpClientDlg::OnBtnCls()
{
UpdateData(true);
if(m_pSkt==NULL)
{
m_pSkt = new CClientSkt(this);
if(0!=m_pSkt->Create(0,SOCK_STREAM,FD_READ|FD_WRITE|FD_OOB|FD_ACCEPT|FD_CONNECT|FD_CLOSE))
{
m_pSkt->Connect(m_strIp,m_nPort);
GetDlgItem(IDC_BTN_CLS)->EnableWindow(FALSE);
GetDlgItem(IDC_BTN_DELETE)->EnableWindow(TRUE);
SetDlgItemText(IDC_NET_STATUS,"网络状态:正在建立连接");
}else
{
SetDlgItemText(IDC_NET_STATUS,"网络状态:建立连接失败,请确认端口是否被占用");
delete m_pSkt;
}
}
}
void CTcpClientDlg::OnBtnDelete()
{
if(m_pSkt!=NULL)
{
m_pSkt->Close();
delete m_pSkt;
m_pSkt =NULL;
GetDlgItem(IDC_BTN_CLS)->EnableWindow(TRUE);
GetDlgItem(IDC_BTN_DELETE)->EnableWindow(FALSE);
SetDlgItemText(IDC_NET_STATUS,"网络状态:连接断开");
SetDlgItemText(IDC_SEND_STATUS,"发送状态:不能发送");
}
}
void CTcpClientDlg::OnCancel()
{
// TODO: Add extra cleanup here
CDialog::OnCancel();
}
unsigned char sndBuff[2048];
void CTcpClientDlg::OnBtnSend()
{
UpdateData(true);
int i,j;
char buf[20];
if(m_pSkt!=NULL)
{
if(m_chk1==1)
{
j=HexStrToTenStr(m_strSenddata.GetBuffer(0) ,sndBuff);
i= m_pSkt->Send(sndBuff,j,0);
if(i>0)
{
m_nSnd+=i;
sprintf(buf,"%d",m_nSnd);
SetDlgItemText(IDC_STATIC_SND,buf);
}
}else
{
i= m_pSkt->Send(m_strSenddata,m_strSenddata.GetLength(),0);
if(i>0)
{
m_nSnd+=i;
sprintf(buf,"%d",m_nSnd);
SetDlgItemText(IDC_STATIC_SND,buf);
}
}
}
}
LRESULT CTcpClientDlg::OnMyMsg(WPARAM wParam, LPARAM lParam)
{
return 0;
}
void CTcpClientDlg::OnClose()
{
char buffer[200];
CString sPath;
CString sPort;
GetModuleFileName(NULL, buffer, MAX_PATH);
sPath=CString(buffer);
sPath = sPath.Left(sPath.ReverseFind('\\'));
sPath += "\\HUB.ini";// 得到初始化文件的全路径
UpdateData(TRUE);
WritePrivateProfileString("SERVER", "IP", m_strIp, sPath);
sPort.Format("%d",m_nPort);
WritePrivateProfileString("SERVER", "PORT",sPort,sPath);
if (MessageBox(_T("确定要退出程序吗?"), "HUB程序",
MB_OKCANCEL | MB_ICONQUESTION) == IDOK)
{
CDialog::OnClose();
}
}
void CTcpClientDlg::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
char buffer[200];
CString sPath;
CString sPort;
GetModuleFileName(NULL, buffer, MAX_PATH);
sPath=CString(buffer);
sPath = sPath.Left(sPath.ReverseFind('\\'));
sPath += "\\HUB.ini";// 得到初始化文件的全路径
m_nPort = GetPrivateProfileInt("SERVER", "PORT", 7777, sPath);// 得到程序累计运行次数
GetPrivateProfileString("SERVER", "IP", "211.144.7.198", buffer, 200, sPath);// 得到上次运行日期
m_strIp=CString(buffer);
UpdateData(FALSE);
// OnStart();
}
BOOL CTcpClientDlg::PreTranslateMessage(MSG* pMsg)
{
if(WM_KEYDOWN == pMsg->message )
{
UINT nKey = (int) pMsg->wParam;
if( VK_RETURN == nKey || VK_ESCAPE == nKey )
return TRUE ;
}
return CDialog::PreTranslateMessage(pMsg);
}
void CTcpClientDlg::AddMsgToEdit(CEdit &editControl, CString str)
{
if (editControl.GetWindowTextLength()>10240)
{
editControl.SetSel(0,-1);
editControl.Clear();
}
int nLen=editControl.GetWindowTextLength ();
editControl.SetSel (nLen, nLen);
editControl.ReplaceSel( LPCTSTR(str));
}
void CTcpClientDlg::OnBClear()
{
m_nSnd = 0;
m_nRcv = 0;
SetDlgItemText(IDC_STATIC_SND,"0");
SetDlgItemText(IDC_STATIC_RCV,"0");
}
void CTcpClientDlg::OnBClr()
{
SetDlgItemText(IDC_EDIT_SENDDATA,"");
m_nSnd =0;
}
void CTcpClientDlg::OnBClrR()
{
SetDlgItemText(IDC_EDIT_RCVDATA,"");
m_nSnd =0;
}
unsigned char HexToChar(char a,char b)
{
const char hex[]="0123456789ABCDEF";
const char hexl[]="0123456789abcdef";
unsigned char j;
int i;
for( i=0;i<16;i++)
if(a==hex[i] || a==hexl[i])
break;
if(i==16)
return 0;
j=i;
for(i=0;i<16;i++)
if(b==hex[i] || b==hexl[i])
break;
if(i==16)
return 0;
j*=16;
j+=i;
return j;
}
int HexStrToTenStr(char *sbuf, unsigned char *dbuf)
{
int i,j,len;
CString s;
unsigned char tmp;
j=0;
s=sbuf;
s.Remove (' ');
s.MakeUpper ();
if(s.GetLength ()%2==0)
len=s.GetLength ();
else
len=s.GetLength ()-1;
for(i=0;i<len;)
{
tmp=HexToChar(s.GetAt (i),s.GetAt (i+1));
dbuf[j++]=tmp;
i+=2;
}
dbuf[j]=0;
return j;
}
int TenCharToHexChar(unsigned char *sbuf, int len, char *dbuf)
{
int i,j;
const char hex[]="0123456789ABCDEF";
j=0;
for(i=0;i<len;i++)
{
dbuf[j++]=hex[sbuf[i]>>4];
dbuf[j++]=hex[sbuf[i]&0x0f];
dbuf[j++]=' ';
}
dbuf[j]=0;
return 1;
}
void CTcpClientDlg::OnCheck2()
{
// TODO: Add your control notification handler code here
UpdateData();
}
bool timerstart;
void CTcpClientDlg::OnTimer(UINT nIDEvent)
{
CDialog::OnTimer(n
没有合适的资源?快使用搜索试试~ 我知道了~
Tcp GPRS dtu
共30个文件
h:8个
cpp:6个
exe:2个
4星 · 超过85%的资源 需积分: 4 72 下载量 85 浏览量
2011-05-04
17:20:21
上传
评论
收藏 65KB ZIP 举报
温馨提示
此软件模拟gprs dtu 转发中心的客户端。在数据的前4字节是路由的地址号。4个字节中的前2字节是发送数据设备的地址。后2字节是接收数据的设备地址。这里的设备可以是gprs dtu 也可以是用户中心的程序
资源推荐
资源详情
资源评论
收起资源包目录
TcpClient.zip (30个子文件)
TcpClient
TcpClient.plg 1KB
TcpClientDlg.h 2KB
ClientSkt.h 1KB
Release
TcpClient.exe 24KB
sk.cpp 624B
res
TcpClient.rc2 401B
TcpClient.ico 1KB
sk.h 1KB
TcpClient.sln 882B
About.cpp 966B
TcpClient.suo 10KB
common.h 160B
About.h 1KB
TcpClient.dsp 4KB
TcpClientDlg.cpp 8KB
TcpClient.h 1KB
TcpClient.rc 7KB
StdAfx.cpp 211B
resource.h 2KB
ClientSkt.cpp 2KB
StdAfx.h 1KB
TcpClient.cpp 2KB
TcpClient.dsw 541B
TcpClient.opt 51KB
TcpClient.vcproj.WWW-64F4BC06F63.Administrator.user 1KB
TcpClient.aps 37KB
Debug
TcpClient.exe 112KB
TcpClient.vcproj 8KB
TcpClient.clw 2KB
TcpClient.ncb 81KB
共 30 条
- 1
资源评论
- yanfangkun2016-02-29很好,谢谢啦
- nicaula_siemens2012-11-24c++编写的 有源代码 学习啦
- ZenZenZ2014-04-14windows c++源代码,应该是部分吧
zhaolysir
- 粉丝: 0
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功