// MFCApplication3Dlg.cpp: 实现文件
//
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <iostream>
#include <afxwin.h> // 包含MFC的头文件
#pragma comment(lib, "ws2_32.lib")
#include "framework.h"
#include "MFCApplication3.h"
#include "MFCApplication3Dlg.h"
#include "afxdialogex.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#define WM_UPDATE_RECEIVE_TEXT 120
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
class CAboutDlg : public CDialogEx
{
public:
CAboutDlg();
// 对话框数据
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_ABOUTBOX };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()
// CMFCApplication3Dlg 对话框
CMFCApplication3Dlg::CMFCApplication3Dlg(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_MFCAPPLICATION3_DIALOG, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
// 接收数据
SOCKET receiverSocket;
UINT ReceiveThread(LPVOID pParam)
{
CMFCApplication3Dlg* pDlg = (CMFCApplication3Dlg*)pParam;
char buffer[1024];
sockaddr_in senderAddress;
int senderAddressSize = sizeof(senderAddress);
int receivedBytes;
while (true)
{
receivedBytes = recvfrom(receiverSocket, buffer, sizeof(buffer), 0, (sockaddr*)&senderAddress, &senderAddressSize);
if (receivedBytes == SOCKET_ERROR) {
std::cout << "接收数据失败" << std::endl;
}
else {
buffer[receivedBytes] = '\0';
// 在主线程中更新UI
pDlg->PostMessageW(WM_UPDATE_RECEIVE_TEXT, (WPARAM)buffer, 0);
}
}
return 0;
}
LRESULT CMFCApplication3Dlg::OnUpdateReceiveText(WPARAM wParam, LPARAM lParam)
{
// 将字节数据转换为CStringA
CStringA strText((LPCSTR)wParam);
// 将CStringA转换为CString,并设置到CEdit控件中
m_receive.SetWindowText(CString(strText));
return 0;
}
void CMFCApplication3Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT1, m_port);
DDX_Control(pDX, IDC_EDIT2, m_receive);
}
BEGIN_MESSAGE_MAP(CMFCApplication3Dlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_MESSAGE(WM_UPDATE_RECEIVE_TEXT, OnUpdateReceiveText)
ON_EN_CHANGE(IDC_EDIT1, &CMFCApplication3Dlg::OnEnChangeEdit1)
END_MESSAGE_MAP()
// CMFCApplication3Dlg 消息处理程序
BOOL CMFCApplication3Dlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != nullptr)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
void CMFCApplication3Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
}
// 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。
void CMFCApplication3Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作区矩形中居中
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;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
}
//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CMFCApplication3Dlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CMFCApplication3Dlg::OnEnChangeEdit1()
{
// TODO: 如果该控件是 RICHEDIT 控件,它将不
// 发送此通知,除非重写 CDialogEx::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask(),
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
// TODO: 在此添加控件通知处理程序代码
// 初始化Winsock
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
std::cout << "初始化套接字" << std::endl;
}
// 创建套接字
receiverSocket = socket(AF_INET, SOCK_DGRAM, 0);
if (receiverSocket == INVALID_SOCKET) {
std::cout << "创建套接字失败" << std::endl;
WSACleanup();
}
// 绑定监听地址
sockaddr_in receiverAddress;
receiverAddress.sin_family = AF_INET;
//端口读取
CString portText;
m_port.GetWindowText(portText);
int portValue = _ttoi(portText);
if (portValue == 0)
{
CString message = L"请输入端口号"; // 警示消息内容
AfxMessageBox(message, MB_ICONWARNING | MB_OK);
}
receiverAddress.sin_port = htons(portValue); // 设置接收方的监听端口号
receiverAddress.sin_addr.s_addr = INADDR_ANY;
if (bind(receiverSocket, (sockaddr*)&receiverAddress, sizeof(receiverAddress)) == SOCKET_ERROR) {
std::cout << "绑定套接字失败" << std::endl;
closesocket(receiverSocket);
WSACleanup();
}
AfxBeginThread(ReceiveThread, this);
}
没有合适的资源?快使用搜索试试~ 我知道了~
UDP测试代码,至少十一个字
共121个文件
tlog:32个
h:12个
obj:11个
需积分: 0 0 下载量 48 浏览量
2023-12-28
00:24:45
上传
评论
收藏 318.03MB RAR 举报
温馨提示
UDP测试代码,至少十一个字
资源推荐
资源详情
资源评论
收起资源包目录
UDP测试代码,至少十一个字 (121个子文件)
MFCApplication3.aps 107KB
MFCApplication2.aps 90KB
MFCApplication3Dlg.cpp 6KB
MFCApplication2Dlg.cpp 6KB
MFCApplication3.cpp 3KB
MFCApplication2.cpp 3KB
pch.cpp 158B
pch.cpp 158B
Browse.VC.db 76.18MB
Browse.VC.db 75.98MB
MFCApplication2.exe 102KB
MFCApplication3.exe 100KB
MFCApplication3.vcxproj.filters 2KB
MFCApplication2.vcxproj.filters 2KB
framework.h 2KB
framework.h 2KB
MFCApplication2Dlg.h 935B
resource.h 878B
MFCApplication3Dlg.h 823B
resource.h 740B
pch.h 544B
pch.h 544B
MFCApplication3.h 530B
MFCApplication2.h 530B
targetver.h 299B
targetver.h 299B
MFCApplication3.ico 66KB
MFCApplication2.ico 66KB
vc141.idb 1.31MB
vc141.idb 1.31MB
MFCApplication2.iobj 1.17MB
MFCApplication3.iobj 1.15MB
b0a94d79a4c52847.ipch 160.06MB
7ef8ab5d021d1557.ipch 158.38MB
MFCAPPLICATION3DLG.ipch 153.5MB
MFCAPPLICATION2DLG.ipch 153.5MB
MFCAPPLICATION2DLG.ipch 153.5MB
a602027ebab9cfb2.ipch 144.69MB
5fce819da1a628a7.ipch 134.06MB
d87a7bb2816c0347.ipch 133.38MB
3f323f3c540c4d42.ipch 115.88MB
MFCApplication2.ipdb 195KB
MFCApplication3.ipdb 192KB
MFCApplication3.lastbuildstate 227B
MFCApplication3.lastbuildstate 227B
MFCApplication2.lastbuildstate 227B
MFCApplication2.lastbuildstate 213B
MFCApplication3.log 487B
MFCApplication3.log 313B
MFCApplication2.log 158B
MFCApplication2.log 103B
pch.obj 6.01MB
pch.obj 6.01MB
MFCApplication3Dlg.obj 4.94MB
MFCApplication2Dlg.obj 4.94MB
MFCApplication2.obj 4.92MB
MFCApplication3.obj 4.14MB
pch.obj 983KB
pch.obj 983KB
MFCApplication3.obj 75KB
MFCApplication2.obj 75KB
MFCApplication2Dlg.obj 56KB
MFCApplication3.pch 54.19MB
MFCApplication2.pch 54.19MB
MFCApplication3.pch 50.31MB
MFCApplication2.pch 50.31MB
vc141.pdb 7.03MB
vc141.pdb 6.95MB
MFCApplication2.pdb 6.75MB
MFCApplication3.pdb 6.69MB
vc141.pdb 6.61MB
vc141.pdb 6.59MB
MFCApplication2.rc 11KB
MFCApplication3.rc 11KB
MFCApplication3.rc2 686B
MFCApplication2.rc2 686B
MFCApplication2.res 68KB
MFCApplication3.res 68KB
MFCApplication2.res 68KB
MFCApplication3.sln 1KB
MFCApplication2.sln 1KB
.suo 34KB
.suo 33KB
CL.read.1.tlog 618KB
CL.read.1.tlog 302KB
CL.read.1.tlog 98KB
CL.read.1.tlog 97KB
link.read.1.tlog 8KB
rc.read.1.tlog 7KB
link.read.1.tlog 7KB
CL.command.1.tlog 5KB
link.command.1.tlog 4KB
rc.read.1.tlog 4KB
rc.read.1.tlog 4KB
CL.command.1.tlog 3KB
CL.write.1.tlog 3KB
CL.command.1.tlog 3KB
CL.write.1.tlog 3KB
link.command.1.tlog 2KB
CL.write.1.tlog 2KB
共 121 条
- 1
- 2
资源评论
ASDWYang
- 粉丝: 292
- 资源: 19
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功