MFC编程实现UDP通讯

遇见一个奇特的问题。套接字创建成功,报文无法发送成功。调试了一上午之后,使用套接字的时候是需要

if (!AfxSocketInit())

{
return FALSE;

}

函数功能:在重载的CWinApp::InitInstance函数中调用这个函数以初始化WindowsSockets。

注意:在调用 AfxSocketInit() 之前,需要包含 afxsock.h 头文件

添加方式:

a.创建项目时在高级功能里点选windows套接字

b.在项目App里的初始化函数中直接添加

奇特问题二:

收到数据报文,但函数返回值是-1

在ReceiveFrom后添加int x=WSAGetLastError();

观察x的值,发现x=10040;查阅资料发现,报文数据过长。

解决办法:

修改接收端数据的长度。

在程序中调用别的程序的exe文件:

以下是调别的程序的exe文件的小代码:

	
    //头文件#include<windows.h><windows h="">
    SHELLEXECUTEINFO ShExecInfo = {0};
	ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
	ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
	ShExecInfo.hwnd = NULL;
	ShExecInfo.lpVerb = NULL;
	ShExecInfo.lpFile = "E:\\CreatDBF\\Debug\\CreatDBF.exe";//别的程序的exe文件
	ShExecInfo.lpParameters="";
	ShExecInfo.lpDirectory = NULL;
	ShExecInfo.nShow = SW_SHOW;
	ShExecInfo.hInstApp = NULL;
	ShellExecuteEx(&amp;ShExecInfo);
	WaitForSingleObject(ShExecInfo.hProcess,INFINITE);//执行完别的程序的exe文件后,返回主程序
	//调用计算器   
	ShellExecute(NULL,"open","calc.exe",NULL,NULL,SW_SHOWNORMAL);  
	//调用记事本  
	ShellExecute(NULL,"open","NOTEPAD.EXE",NULL,NULL,SW_SHOWNORMAL);
</windows>


。UDP的各种函数解析:

客户端只需要create。

服务端先create,再bind。

Create(localport,SOCK_DGRAM)//本地端口号,以UDP方式连接
Bind(m_port,m_ip);//绑定自己的端口,地址
SendTo(m_data, datalen,m_port, m_ip,0);//要发送的数据,数据长度,远程端口号,远程ip
ReceiveFrom(Buf, Buflen,m_port, m_ip, 0);//.....
代码在别的电脑,稍后更新到资源。

UDP与TCP的连接基本相似。

注:SendTo函数如果有返回值,速度会比较慢。影响效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值