UDP广播
来源:互联网 发布:mysql解锁被锁定的表 编辑:程序博客网 时间:2024/04/27 22:03
发送
#include <Stdio.h>
#include <WinSock.h>
//////////////////////////////////////////////////////////////////////////
struct AfxInitSocket
{
AfxInitSocket()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(1, 1), &wsaData);
}
~AfxInitSocket()
{
WSACleanup();
}
} _AfxInitSocket;
//////////////////////////////////////////////////////////////////////////
int main(int argc, char *argv[])
{
bool bBroadcast = true;
SOCKET hSocket= socket(PF_INET, SOCK_DGRAM, 0);
setsockopt(hSocket, SOL_SOCKET, SO_BROADCAST, (char *) &bBroadcast, sizeof(bBroadcast));
SOCKADDR_IN addrUDP = { 0 };
addrUDP.sin_family = AF_INET;
addrUDP.sin_port = htons(0);
addrUDP.sin_addr.s_addr = htonl(INADDR_ANY);
if (bind(hSocket, (SOCKADDR *) &addrUDP, sizeof(addrUDP)) != 0) {
return -1;
}
addrUDP.sin_family = AF_INET;
addrUDP.sin_port = htons(7001);
addrUDP.sin_addr.s_addr = htonl(INADDR_BROADCAST);
char szSendBuffer[] = "Hello, This is Server!";
sendto(hSocket, szSendBuffer, sizeof(szSendBuffer), 0, (SOCKADDR *) &addrUDP, sizeof(SOCKADDR_IN));
return 0;
}
//////////////////////////////////////////////////////////////////////////
接收
#include <Stdio.h>
#include <Conio.h>
#include <WinSock.h>
//////////////////////////////////////////////////////////////////////////
struct AfxInitSocket
{
AfxInitSocket()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(1, 1), &wsaData);
}
~AfxInitSocket()
{
WSACleanup();
}
} _AfxInitSocket;
//////////////////////////////////////////////////////////////////////////
int main(int argc, char *argv[])
{
SOCKADDR_IN addrUDP = { 0 };
addrUDP.sin_port = htons(7001);
addrUDP.sin_family = AF_INET;
addrUDP.sin_addr.s_addr = htonl(INADDR_ANY);
SOCKET hSocket = socket(AF_INET, SOCK_DGRAM, 0);
if (bind(hSocket, (SOCKADDR FAR *) &addrUDP, sizeof(addrUDP)) != 0) {
return -1;
}
int nTimeout = 1000; // 设置超时一秒
setsockopt(hSocket, SOL_SOCKET, SO_RCVTIMEO, (char *) &nTimeout, sizeof(nTimeout));
for (int i=0; i<20; ++i) {
int nSize = sizeof(SOCKADDR_IN);
int nRecvLength = 0;
char szRecvBuffer[1024] = { 0 };
nRecvLength = recvfrom(hSocket, szRecvBuffer, sizeof(szRecvBuffer), 0, (SOCKADDR *) &addrPeer, &nSize);
if (nRecvLength != SOCKET_ERROR) {
szRecvBuffer[nRecvLength] = 0;
printf("Recv --- %s/n", szRecvBuffer);
}
else {
printf("Timeout/n");
}
}
return 0;
}
//////////////////////////////////////////////////////////////////////////
- UDP广播
- UDP广播
- udp广播
- UDP广播
- UDP广播
- UDP广播
- UDP 广播
- UDP广播
- UDP广播
- UDP广播
- udp广播
- udp广播
- UDP广播
- UDP广播
- UDP广播
- udp广播
- udp广播与直接广播
- UDP广播,UDP多播
- 你一定要知道的71个做饭技巧 -专家滴说
- 升级原来已经翻译过的PO文件
- Base knowledge of semiconductor3
- rpm软件包管理系统的常用命令
- 关于SQL与Oracle 数据同步
- UDP广播
- 升级原来已经翻译过的PO文件
- 2008年地球科学领域热点论文
- JavaScript 获取客户端计算机硬件及系统信息
- php mssql 日期出现汉字
- 装饰器模式(Decorator)[转载]
- 分享7个我常去的国外Ajax&Jquery网站
- A Survey of Web 2.0 Technologies
- 71个做饭技巧