打怪升级之如何发送单个UDP数据包

输出UDP数据包需要哪些东西

1.你需要一个socket、一个WSA;
2.你需要这个socket对应的地址,地址包括IP和端口;
3.你需要一个标准的用于发送的数据

设计RC界面

在这里插入图片描述

定义各控件

在这里插入图片描述

初始化

初始化WSA,这可以在initial里面完成。

	//初始化WSA
	WORD wVersion = MAKEWORD(2, 2);
	WSAStartup(wVersion, &wsaDATA);

按下连接按钮并发送

	//获取变量值
	DWORD DIP;
	CString CSPort;
	IP_E.GetAddress(DIP);
	Port_E.GetWindowText(CSPort);

	//获取IP的strring值
	unsigned char* pip;
	pip = (unsigned char*)&DIP;
	char ip_addr[16];
	sprintf_s(ip_addr, 16, "%u.%u.%u.%u", *(pip + 3), *(pip + 2), * (pip+1), *pip);

	CString str;
	str = ip_addr;

	//初始化socket
	sockfd = socket(AF_INET, SOCK_DGRAM, 0);

	MessageBox(str);
	//获取port的值
	int port_i = _wtoi(CSPort);
	if (port_i < 10000)
	{
		ServerAddr.sin_family = AF_INET;
		inet_pton(AF_INET, ip_addr, &ServerAddr.sin_addr);
		ServerAddr.sin_port = htons(port_i);
		MSG_t msg = { 0 };
		msg.type = 1;
		int i = 0;
		for (i = 0; i <= 98; i++)msg.text[i] = i;
		msg.text[99] = ' \0';
		if (sendto(sockfd, (char*)&msg, sizeof(msg), 0, (struct sockaddr*)&ServerAddr, sizeof(ServerAddr)) == SOCKET_ERROR)
		{
			CString erro;
			erro.Format(_T("%d"), WSAGetLastError());
			MessageBox(erro);
			WSACleanup();
		}
		else
		{
			state_S.SetWindowText(_T("Connect Success!!!"));
			closesocket(sockfd);
			WSACleanup();
		}
	}
	else
	{
		MessageBox(_T("port erro!"));
	}

实验结果

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

考琪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值