UDP连接

该博客介绍了如何使用UDP套接字进行数据接收。通过`WSARecvFrom`函数从UDP连接中读取数据,初始化缓冲区,处理每帧1060字节的数据,并在接收错误时释放内存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

	WORD wVersionRequested;
	WSADATA wsaData;
	int err;
	
	wVersionRequested = MAKEWORD( 2, 2 );
	
	err = WSAStartup( wVersionRequested, &wsaData );
	if ( err != 0 ) 
	{
		return FALSE;
	} 
	
	if ( LOBYTE( wsaData.wVersion ) != 2 ||
		HIBYTE( wsaData.wVersion ) != 2 )
	{
		WSACleanup();
		return FALSE; 
	}
	
	m_socket = WSASocket(AF_INET, SOCK_DGRAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED);
	
	if (INVALID_SOCKET == m_socket)
	{
		AfxMessageBox("创建套接字失败!");
		return FALSE;
	}
	
	SOCKADDR_IN addrSock;
	addrSock.sin_family				= AF_INET;
	addrSock.sin_port				= htons(8900);
	addrSock.sin_addr.S_un.S_addr	= inet_addr("192.168.1.59");//上位机ip=192.168.1.59,
																//下位机IP=192.168.1.11
	

	if (SOCKET_ERROR == bind(m_socket, (SOCKADDR*)&addrSock, sizeof(SOCKADDR)))
	{
		AfxMessageBox("绑定失败!");
		return FALSE;
	}

	int timeout = 100*1;
	if (SOCKET_ERROR  == setsockopt(m_socket,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(timeout)))
	{
		TRACE("set sock opt fail.");
	}
	timeout = 100*1;
	if (SOCKET_ERROR  == setsockopt(m_socket,SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,sizeof(timeout)))
	{
		TRACE("set sock opt fail.");
	}
 if (SOCKET_ERROR == WSASendTo( m_socket, &wsabuf, 1, &dwSend, 0,
       (SOCKADDR*)&addrTo, sizeof(SOCKADDR), NULL, NULL))
  {
   delete []wsabuf.buf;
   return FALSE;
  }

 DWORD dwRead;  DWORD dwFlag = 0;    SOCKADDR_IN addrFrom;  int len = sizeof(SOCKADDR);    WSABUF wsabuf;  wsabuf.buf = new char[1060];  wsabuf.len = 1060;    //每帧实际长度    memset(&g_waveBuf, 0, sizeof(WAVELENGTH_SOCKET));  memset(&g_specBuf, 0, sizeof(SPCETRUEM_SOCKET));

  if (SOCKET_ERROR == WSARecvFrom(m_socket, &wsabuf, 1, &dwRead, &dwFlag,        (SOCKADDR*)&addrFrom, &len, NULL, NULL))   {    delete []wsabuf.buf;    return 0;

  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值