windows udp网络数据包收发控制

1、所需的头文件、库文件和DLL目前使用最广泛的Windows Socket2.2版本,所需的一些文件如下(以安装了VC6为例说明其物理位置):l         头文件winsock2.h,通常处于C:"Program Files"Microsoft Visual Studio"VC98"INCLUDE;查看该头文件可知其中又包含了windows.h和pshpack4.h头文件,
摘要由CSDN通过智能技术生成


1、所需的头文件、库文件和DLL

目前使用最广泛的Windows Socket2.2版本,所需的一些文件如下(以安装了VC6为例说明其物理位置):

l         头文件winsock2.h,通常处于C:"Program Files"Microsoft Visual Studio"VC98"INCLUDE查看该头文件可知其中又包含了windows.hpshpack4.h头文件,因此在windows中的一些常用API都可以使用;

l         库文件Ws2_32.lib,通常处于C:"Program Files"Microsoft Visual Studio"VC98"Lib

l         DLL文件Ws2_32.dll,通常处于C:"WINDOWS"system32


2、UDP收发程序

#include <winsock2.h>
#pragma comment(lib, "ws2_32")

int WebCamera::UDPinitializer(SOCKET *Socket,unsigned short Port)
{
int error;
SOCKADDR_IN addrSrv;
// SOCKADDR_IN AddrTo;
unsigned long flag=1; 
int nRecvBuf=1024*1024*256;//设置为256M

WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD( 2, 2 );
if ( WSAStartup( wVersionRequested, &wsaData ) != 0 )

{

return 0;

}
if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 )

{
WSACleanup( );
return 0;
}

addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(Port);
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
if(*Socket)

{
closesocket(*Socket);
*Socket=NULL;
}
*Socket=socket( AF_INET , SOCK_DGRAM , 0 );
error = bind(*Socket,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
if(SOCKET_ERROR == error)

return 0;
else

{
setsockopt(*Socket,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));
// setsockopt(m_hSocketImage,SOL_SOCKET,SO_REUSEADDR,(const char*)&nRecvBuf,sizeof(int));
if (ioctlsocket(*Socket,FIONBIO,&flag)!=0)


closesocket(*Socket); 
return 0; 
}
}
return 1; 
}

3、数据类型和相关函数说明

1)SOCKET类型

SOCKETsocket套接字类型,在WINSOCK2.H中有如下定义:

typedef unsigned int    u_int;

typedef u_int           SOCKET;

可知套接字实际上就是一个无符号整型,它将被Socket环境管理和使用。套接字将被创建、设置、用来发送和接收数据,最后会被关闭。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

天上人间555

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

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

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

打赏作者

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

抵扣说明:

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

余额充值