对于Socket的UDP数据广播的重新认识
来源:互联网 发布:bugku sql注入1 编辑:程序博客网 时间:2024/06/05 20:06
原来一直认为,UDP广播就是对已知的一连串IP地址来逐个发送数据包,我的机房远程协助程序就是这样写出来的,但是今天在学习WOL的时候,我才发现,我原来的观点是错误的,于是,我发起了对UDP数据广播的重新认识:
下面给出windows下UDP发送广播数据代码.
UDP广播地址为255.255.255.255
通过setsockopt这个API设置一个socket为广播socket
////////////////////////////////////////////////////////////////////////////////////////
setsockopt说明:
设置套接口的选项。
#include <winsock.h>
int PASCAL FAR setsockopt( SOCKET s, int level, int optname,
const char FAR* optval, int optlen);
s:标识一个套接口的描述字。
level:选项定义的层次;目前仅支持SOL_SOCKET和IPPROTO_TCP层次。
optname:需设置的选项。
optval:指针,指向存放选项值的缓冲区。
optlen:optval缓冲区的长度。
/////////////////////////////////////////////////////////////////////////////////////////
///代码示例
SOCKET sock;
BOOL bBroadcast = TRUE;
char szBroadcast[] = "this is broadcast data!";
SOCKADDR_IN sockAddr;
// create udp socket
sock = WSASocket(AF_INET, SOCK_DGRAM/*UDP*/, 0, NULL, 0, WSA_FLAG_OVERLAPPED);
// set udp broadcast optional
setsockopt(sock, SOL_SOCKET, SO_BROADCAST/* broadcast data */, (char*)&bBroadcast, sizeof(BOOL));
// initial SOCKADDR_IN
sockAddr.sin_family = AF_INET;
sockAddr.sin_addr.s_addr = inet_addr(INADDR_BROADCAST);
sockAddr.sin_port = htons(8080); // broadcast port
sendto(sock, szBroadcast, strlen(szBroadcast), 0, (SOCKADDR*)&sockAddr, sizeof(sockAddr));
- 对于Socket的UDP数据广播的重新认识
- 对于UML图的重新认识
- 对于UML图的重新认识
- 对于UDP组播的一些认识
- 对于UDP组播的一些认识
- 对socket、tcp、udp、http 的认识
- UDP的socket绑定到IP地址后无法接受广播数据
- UDP的socket绑定到IP地址后无法接受广播数据
- Socket使用Udp广播收发数据
- Socket 进行UDP广播数据(GCDAsyncUdpSocket)
- Socket 进行UDP广播数据(GCDAsyncUdpSocket)
- 重新认识excel(4):数据的位置
- C语言socket UDP广播的发送和接收示例
- iOS- 移动端Socket UDP协议广播机制的实现
- iOS 利用Socket UDP协议广播机制的实现
- java的udp广播
- UDP广播的代码
- socket、tcp、udp、http 的认识及区别
- WinForm项目打包(转载)
- 简要分析Ogre渲染队列的实现原理(一)
- vim配置
- 用SendARP API函数获取远程主机MAC地址学习心得
- HDU 1305 Immediate Decodability(二叉树)
- 对于Socket的UDP数据广播的重新认识
- XML 节点解析函数MySelf 学习
- Hello world!
- 强命名程序集 sn.exe GAC
- 仅需一个HTML页面即可查看你编写的JavaScript执行结果!
- 学习Hibernate时遇到的问题
- 斜杠u(/u)开头的编码,转化为汉字
- .bss段和.data段的区别
- 进程间通信