// TcpClientDlg.cpp : implementation file
//
#include "stdafx.h"
#include "TcpClient.h"
#include "ClientSkt.h"
#include "TcpClientDlg.h"
#include "common.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 = 8888;
m_strIp = _T("192.168.1.169");
m_strSenddata = _T("");
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()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_CHECK3, &CTcpClientDlg::OnBnClickedCheck3)
ON_BN_CLICKED(IDC_CHECK1, &CTcpClientDlg::OnBnClickedCheck1)
ON_EN_CHANGE(IDC_EDIT_SENDDATA, &CTcpClientDlg::OnEnChangeEditSenddata)
ON_STN_CLICKED(IDC_SEND_STATUS, &CTcpClientDlg::OnStnClickedSendStatus)
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,"网络状态:连接断开");
}
}
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)
{
// MessageBox("Yes It is me!");
/*
for(int i=0;i<10;i++)
{
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,"网络状态:连接断开");
}
}
*/
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(unsigne
没有合适的资源?快使用搜索试试~ 我知道了~
TCP 源代码,VS2005编写,TCP客户端程序
共29个文件
h:7个
cpp:5个
user:2个
1星 需积分: 10 12 下载量 71 浏览量
2013-11-14
14:35:52
上传
评论
收藏 2.75MB RAR 举报
温馨提示
TCP/IP 客户端演示程序,此例子程序可以和TCP 服务器程序通信,演示了如何创建SOCKET,如何收数据和发数据。
资源推荐
资源详情
资源评论
收起资源包目录
TcpClient.rar (29个子文件)
TcpClient
TcpClient.plg 2KB
TcpClientDlg.h 2KB
ClientSkt.h 1KB
TcpClient.vcproj.zhao-PC.zhao.user 1KB
Release
TcpClient.exe 36KB
sk.cpp 624B
res
TcpClient.rc2 401B
TcpClient.ico 1KB
sk.h 1KB
TcpClient.sln 886B
TcpClient.suo 11KB
common.h 160B
TcpClient.dsp 4KB
TcpClientDlg.cpp 9KB
TcpClient.h 1KB
TcpClient.rc 6KB
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 38KB
Debug
TcpClient.exe 140KB
TcpClient.vcproj 8KB
TcpClient.clw 2KB
TcpClient.ncb 9.95MB
共 29 条
- 1
资源评论
- An_angel_of_joy2013-11-14一般化的代码!
javasms_qq3134927020
- 粉丝: 2
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功