// Server
#include <stdio.h>
#include <winsock.h>
#pragma comment(lib, "wsock32.lib")
int main(int argc, char* argv[])
{
WSADATA wsaData;
SOCKET sockListener;
SOCKADDR_IN sin, saUdpServ;
BOOL fBroadcast = TRUE;
char sendBuff[1024];
int nSize;
int nCount = 0;
if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0) // initialize WinSocket
{
printf("Failed to initialize windows socket!/n");
return -1;
}
sockListener = socket(PF_INET, SOCK_DGRAM, 0);
setsockopt(sockListener, SOL_SOCKET, SO_BROADCAST, (CHAR*)&fBroadcast, sizeof(BOOL));
sin.sin_family = AF_INET;
sin.sin_port = htons(0);
sin.sin_addr.s_addr = htonl(INADDR_ANY);
if (bind(sockListener, (SOCKADDR*)&sin, sizeof(sin)) != 0)
{
printf("failed to bind socket to local port!/n");
return -1;
}
saUdpServ.sin_family = AF_INET;
saUdpServ.sin_addr.s_addr = htonl(INADDR_BROADCAST);
saUdpServ.sin_port = htons(7001);
nSize = sizeof(SOCKADDR_IN);
while (true)
{
sprintf(sendBuff, "Message%d", nCount++);
sendto(sockListener, sendBuff, lstrlen(sendBuff), 0, (SOCKADDR*)&saUdpServ, sizeof(SOCKADDR_IN));
printf("%s/n", sendBuff);
}
return 0;
}
// client
#include <stdio.h>
#include <winsock.h>
#include <conio.h>
#pragma comment(lib, "wsock32.lib")
int main(int argc, char* argv[])
{
WSADATA wsaData;
SOCKET sockListener;
SOCKADDR_IN sin, saClient;
char cRecvBuff[1024];
int nSize, nbSize;
int iAddrLen = sizeof(saClient);
if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0)
{
printf("Failed to initialize windows socket!/n");
return -1;
}
sockListener = socket(AF_INET, SOCK_DGRAM, 0);
sin.sin_family = AF_INET;
sin.sin_port = htons(7001);
sin.sin_addr.s_addr = htonl(INADDR_ANY);
if (bind(sockListener, (SOCKADDR FAR*)&sin, sizeof(sin)) != 0)
{
printf("Failed to bind socket to local port!/n");
return -1;
}
while (true)
{
nSize = sizeof(SOCKADDR_IN);
if ((nbSize = recvfrom(sockListener, cRecvBuff, 1024, 0,
(SOCKADDR FAR*)&saClient, &nSize)) == SOCKET_ERROR)
{
printf("Receive Error!");
break;
}
cRecvBuff[nbSize] = '/0';
printf("%s/n", cRecvBuff);
}
return 0;
}
UDP实现局域网内的广播
原创
©著作权归作者所有:来自51CTO博客作者Lyndon_梁飞的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
异地局域网如何互通?(GRE篇)安全策略 GRE隧道 异地局域网互通 华为防火墙 华三防火墙
-
CentOS7如何搭建局域网源(http源)
本章主要以作者发布http源的操作为主。
centos html http源 -
局域网摄像头视频安全上云解决方案
局域网视频上云
内网 4G 云平台 -
Python使用UDP协议实现局域网内屏幕广播
3年前推送过一篇使用TCP协议进行局域网内屏幕广播的文章,见Python实现局域网
python 局域网 屏幕广播 UDP 丢包 -
Python实现局域网内屏幕广播的技术要点分析
Python实现局域网内屏幕广播的技术要点分析
Python可以这样学 Python tkinter udp socket -
python绘制haokan3d动态
最近在研究动态障碍物避障算法,在Python语言进行算法仿真时需要实时显示障碍物和运动物的当前位置和轨迹,利用Anaconda的Python打包集合,在Spyder中使用Python3.5语言和matplotlib实现路径的动态显示和交互式绘图(和Matlab功能类似)。Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理
python绘制haokan3d动态 python动态更新窗口上的图片 python Python 动态显示