最终界面如图所示:
客户端代码如下:
// ClientDlg.h : 头文件
//
#pragma once
UINT Recv_Th(LPVOID p);
// CClientDlg 对话框
class CClientDlg : public CDialog
{
// 构造
public:
CClientDlg(CWnd* pParent = NULL); // 标准构造函数
// 对话框数据
enum { IDD = IDD_CLIENT_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
HICON m_hIcon;
// 生成的消息映射函数
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
void Update(CString str);
private:
CEdit * edit_ip;
CEdit * edit_send;
CEdit * edit_show;
CButton * btn_conn;
public:
afx_msg void OnBnClickedBsend();
afx_msg void OnBnClickedBconn();
};
// ClientDlg.cpp : 实现文件
//
#include <winsock2.h>
#include "stdafx.h"
#include "Client.h"
#include "ClientDlg.h"
#pragma comment(lib, "WS2_32.lib")
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
SOCKET sock;
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// 对话框数据
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
EnableActiveAccessibility();
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
// CClientDlg 对话框
CClientDlg::CClientDlg(CWnd* pParent /*=NULL*/)
: CDialog(CClientDlg::IDD, pParent)
{
EnableActiveAccessibility();
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CClientDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CClientDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BSEND, &CClientDlg::OnBnClickedBsend)
ON_BN_CLICKED(IDC_BCONN, &CClientDlg::OnBnClickedBconn)
END_MESSAGE_MAP()
// CClientDlg 消息处理程序
BOOL CClientDlg: