资源简介
vc编写UDP封装类(实用),注释很详尽,应用很方便。值得学习和参考的代码!
代码片段和文件信息
#include “stdafx.h“
#include
#include “UdpEx.h“
#ifdef LogN
#define Log LogN(4000)
#elif (defined TRACE)
#define Log TRACE
#else
#define Log
#endif
//静态实例成员
CUdpEx CUdpEx::m_sInstance;
/*******************************************************************************
* 函数名称:
* 功能描述: 向指定IP地址和端口发送数据。
* 输入参数: lpszIP -- 目标IP地址。
* nPort -- 端口号。
* pData -- 数据缓冲区。
*
* 输出参数:
* 返 回 值: 成功发送完指定的长度返回TRUE,反之返回FALSE。
* 其它说明:
* 修改日期 修改人 修改内容
* ------------------------------------------------------------------------------
* 2008-04-23 周锋 创建
*******************************************************************************/
BOOL CUdpEx::SendUdpData(LPCSTR lpszIP int nPort const char *pData int nLen)
{
Log(“Func -- BOOL CUdpEx::SendUdpData(%s %n %p %n)“
lpszIP nPort pData nLen);
SOCKET_HANDLE hSocket;
struct sockaddr_in addrRecv;
if (0 == (hSocket = socket(AF_INET SOCK_DGRAM IPPROTO_UDP)))
{
Log(“创建UDP Socket句柄失败!“);
return FALSE;
}
addrRecv.sin_family = AF_INET;
addrRecv.sin_port = htons(nPort);
addrRecv.sin_addr.s_addr = inet_addr(lpszIP);
int nSended = sendto(hSocket
pData
nLen
0
(sockaddr*) &addrRecv
(int)sizeof(addrRecv));
#if (defined _WIN32) || (defined _WINDOWS_)
closesocket(hSocket);
#else
close(hSocket);
#endif
return (nSended == nLen);
}
/*******************************************************************************
* 函数名称:
* 功能描述: 启动UDP数据监听,如果成功将会把数据通过指定回调函数返回。
* 输入参数: nPort -- 监听的端口号。
* pfnData -- 数据反馈的回调函数。
* lpszLocalIP -- 本机IP地址,可为空字符串,不可为NULL,输入空字符串将在所有网卡上进行监听。
* lpszMultiIP -- 组播地址,可为空字符串,不可为NULL,输入空字符串将不会接受组播信息。
* 输出参数:
* 返 回 值: 启动监听返回TRUE,失败返回FALSE。
* 其它说明:
* 修改日期 修改人 修改内容
* ------------------------------------------------------------------------------
* 2008-04-23 周锋 创建
*******************************************************************************/
BOOL CUdpEx::StartReceive(int nPort
DataReceiveCallbackType pfnData
LPVOID lpContext
LPCSTR lpszLocalIP
LPCSTR lpszMultiIP)
{
Log(“Func -- BOOL CUdpEx::StartReceive(%d %p %s %s)“ nPort pfnData lpszLocalIP lpszMultiIP);
sockaddr_in addrRecv;
struct ip_mreq mreq;
SOCKET_HANDLE hSocket = socket(AF_INET SOCK_DGRAM IPPROTO_UDP);
addrRecv.sin_family = AF_INET;
addrRecv.sin_port = htons(nPort);
addrRecv.sin_addr.s_addr = inet_addr(lpszLocalIP);
//设置端口复用
BOOL bSockReuse = TRUE;
int iRet = setsockopt(hSocket
SOL_SOCKET
SO_REUSEADDR
(VAL_TYPE)&bSockReuse sizeof(bSockReuse));
//邦定socket
if(0 != bind(hSocket (sockaddr *) &addrRecv sizeof(addrRecv)))
{
Log(“端口地址绑定失败<%s:%d> -- <%d>!“ lpszLocalIP nPort WSAGetLastError());
#if (defined _WIN32) || (defined _WINDOWS_)
closesocket(hSocket);
#else
close(hSocket);
#endif
return FALSE;
}
//设置Socket缓冲(一般默认是8192)
int nRcvBuffSize = 8192 * 100;
if(0 != setso
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 33792 2011-11-17 15:02 UDP封装类\Debug\vc60.idb
文件 28672 2011-11-17 15:02 UDP封装类\Debug\vc60.pdb
文件 11930 2008-07-08 17:26 UDP封装类\UdpEx.cpp
文件 3449 2011-11-17 15:04 UDP封装类\UdpEx.dsp
文件 518 2009-05-02 14:12 UDP封装类\UdpEx.dsw
文件 3023 2008-05-08 11:16 UDP封装类\UdpEx.h
文件 50176 2011-11-17 15:04 UDP封装类\UdpEx.ncb
文件 53760 2011-11-17 15:04 UDP封装类\UdpEx.opt
文件 1285 2011-11-17 15:02 UDP封装类\UdpEx.plg
文件 14726 2008-07-25 16:32 UDP封装类\udpex_new\udpex\UdpEx.cpp
文件 4171 2008-07-25 16:28 UDP封装类\udpex_new\udpex\UdpEx.h
文件 5122 2008-07-25 17:16 UDP封装类\udpex_new.rar
文件 11971 2008-07-09 11:19 UDP封装类\udpex_old\UdpEx.cpp
文件 3023 2008-05-08 11:16 UDP封装类\udpex_old\UdpEx.h
文件 4392 2008-07-25 17:16 UDP封装类\udpex_old.rar
..A.SHR 120 2008-12-29 13:48 UDP封装类\vssver2.scc
目录 0 2009-04-27 17:53 UDP封装类\udpex_new\udpex
目录 0 2011-11-17 14:59 UDP封装类\Debug
目录 0 2009-04-27 17:53 UDP封装类\udpex_new
目录 0 2009-04-27 17:53 UDP封装类\udpex_old
目录 0 2011-11-17 15:04 UDP封装类
----------- --------- ---------- ----- ----
230130 21
相关资源
- XPButton控件及资料
- UDP协议通信演示Delphi源码
- SSM框架(一) 基于eclipseJee搭建Sping
- SJF2440源码 源代码 官方发布VC++完整
- VC Socket GET_POST发送HTTP请求
- mac版本的Navcat破解版!!包能用
- 嵌入式印刷体数字识别
- JAI相机的VC使用方法设置
- 印刷体汉字识别程序VC编写
- CtabSheet源代码
- 微型伺服马达原理与控制.doc
- 远控小木马
- VCA820可控增益放大器
- PVCS Professional
- maven+ssm+shiro
- 计算机网络课程设计实验报告
- ssh项目demo
- UDP实现P2P
- Socket Raw实现的IPV4INIPV6 UDP数据包发送
- QUdpSocket 多线程编程 moveToThread
- qt udp多线程收发数据
- Spring MVC +Spring + Mybatis 构建分库分表源
- Struts——一种开源MVC的实现外文文献
- Qt使用udp协议,简单易懂
- 静止无功补偿器
- MVC架构模式ppt课件
- msvcp140d.dll
- VC 实现非窗口类中使用定时器的方法
- Labview的UDP发送与接收程序
- socket通信 基于udp
评论
共有 条评论