资源简介
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
相关资源
- 使用选择性重传协议实现UDP可靠通信
- Windows异步套接字网络编程
- VC 获得文件属性 获取文件的创建时
- 基于MVC模式的会员管理系统
- silicon lab公司的收音IC SI47XX全套开发工
- 读者写者问题(读者优先,写者优先
- MFC程序-碰撞的小球
- vc 柱形图 CBarChart
- 用vc 写的导线测量,针对刚学测绘的
- 用VC 编写的仿QQ聊天室程序源代码
- 栅栏填充算法源码(VC)
- 简单的房屋租赁系统
- .net网站服装销售系统(MVC)
-
ob
jectARX给Auto CAD加工具条 - blowfish的vc2008工程.rar
- 画图程序MFC/VC/VC CRectTracker 串行化
- capon波束形成算法-VC实现
- 读取串口数据并画实时曲线的VC 程序
- VC 游戏编程—附源代码
- IpHlpApi.h&IpHlpApi.lib
- vc 6.0开发的流程图编辑器
- VC 天空盒(skyBox)实现(附源代码)
- c MFC 画多边形
- keil vcom windows 7 64bit 驱动
- 网络(UDP)转串口程序
- vc URL编解码类
- vc编写中国象棋详细源码注释并附有视
- VC 围棋源代码
- 用VC 编写的基于SNMP的路由器拓扑程序
- vc利用MFC底层开发的二维GIS管理软件,
评论
共有 条评论