UDP广播socket实现
2016-10-21 12:20
393 查看
UDP广播:
#include "stdafx.h"
#include<stdio.h>
#include <iostream>
#include<winsock2.h>
#include<windows.h>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
SOCKET sock;
sockaddr_in addrto;
WSADATA wsdata;
bool bsocket;
char smsg[100] = {0};
cout<<"input what message to send\n:"<<endl;
cin>>smsg;
//启动SOCKET库,版本为2.0
WSAStartup(0x0202,&wsdata);
sock=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,WSA_FLAG_OVERLAPPED);
bsocket=true;
//然后赋值给地址,用来从网络上的广播地址接收消息;
addrto.sin_family=AF_INET;
addrto.sin_addr.s_addr=INADDR_BROADCAST;
addrto.sin_port=htons(9000);
bool opt=true;
//设置该套接字为广播类型,
setsockopt(sock,SOL_SOCKET,SO_BROADCAST,(char FAR *)&opt,sizeof(opt));
int nlen=sizeof(addrto);
char buf[100] = {0};
while(1)
{
addrto.sin_family=AF_INET;
addrto.sin_addr.s_addr=INADDR_BROADCAST;
addrto.sin_port=htons(9000);
Sleep(1000);
//从广播地址发送消息
int ret=sendto(sock,smsg, strlen(smsg) + 1,0,(sockaddr*)&addrto,nlen);
if(ret==SOCKET_ERROR)
{
printf("%d/n",WSAGetLastError());
}
else
{
printf("It'sock OK.\n");
}
ret = recvfrom( sock, buf, sizeof(buf), 0, (sockaddr*)&addrto, &nlen );
if (SOCKET_ERROR == ret)
{
printf("error on recv after send!\n");
}
else
{
printf("recv after send: %s\n", buf);
}
}
return 0;
}
转载自:https://my.oschina.net/lopo/blog/260891;(转载请注明)
const int MAX_BUF_LEN = 255; int main(int argc, char* argv[]) { WORD wVersionRequested; WSADATA wsaData; int err; // 启动socket api wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { return -1; } if ( LOBYTE( wsaData.wVersion ) != 2 ||HIBYTE( wsaData.wVersion ) != 2 ) { WSACleanup( ); return -1; } // 创建socket SOCKET connect_socket; connect_socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if(INVALID_SOCKET == connect_socket) { err = WSAGetLastError(); printf("socket error! error code is %d\n", err); return -1; } // 用来绑定套接字 SOCKADDR_IN sin; sin.sin_family = AF_INET; sin.sin_port = htons(321); sin.sin_addr.s_addr = 0; // 用来从网络上的广播地址接收数据 SOCKADDR_IN sin_from; // 绑定套接字 err = bind(connect_socket, (SOCKADDR*)&sin, sizeof(SOCKADDR)); if(SOCKET_ERROR == err) { err = WSAGetLastError(); printf("bind error! error code is %d\n", err); return -1; } int nAddrLen = sizeof(SOCKADDR); char buff[MAX_BUF_LEN] = ""; int nLoop = 0; while(1) { // 接收数据 int nSendSize = recvfrom(connect_socket, buff, MAX_BUF_LEN, 0, (SOCKADDR*)&sin_from, &nAddrLen); if(SOCKET_ERROR == nSendSize) { err = WSAGetLastError(); printf("recvfrom error! error code is %d/n", err); return -1; } buff[nSendSize] = '\0'; printf("Recv: %s\n", buff); } return 0; }
#include "stdafx.h"
#include<stdio.h>
#include <iostream>
#include<winsock2.h>
#include<windows.h>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
SOCKET sock;
sockaddr_in addrto;
WSADATA wsdata;
bool bsocket;
char smsg[100] = {0};
cout<<"input what message to send\n:"<<endl;
cin>>smsg;
//启动SOCKET库,版本为2.0
WSAStartup(0x0202,&wsdata);
sock=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,WSA_FLAG_OVERLAPPED);
bsocket=true;
//然后赋值给地址,用来从网络上的广播地址接收消息;
addrto.sin_family=AF_INET;
addrto.sin_addr.s_addr=INADDR_BROADCAST;
addrto.sin_port=htons(9000);
bool opt=true;
//设置该套接字为广播类型,
setsockopt(sock,SOL_SOCKET,SO_BROADCAST,(char FAR *)&opt,sizeof(opt));
int nlen=sizeof(addrto);
char buf[100] = {0};
while(1)
{
addrto.sin_family=AF_INET;
addrto.sin_addr.s_addr=INADDR_BROADCAST;
addrto.sin_port=htons(9000);
Sleep(1000);
//从广播地址发送消息
int ret=sendto(sock,smsg, strlen(smsg) + 1,0,(sockaddr*)&addrto,nlen);
if(ret==SOCKET_ERROR)
{
printf("%d/n",WSAGetLastError());
}
else
{
printf("It'sock OK.\n");
}
ret = recvfrom( sock, buf, sizeof(buf), 0, (sockaddr*)&addrto, &nlen );
if (SOCKET_ERROR == ret)
{
printf("error on recv after send!\n");
}
else
{
printf("recv after send: %s\n", buf);
}
}
return 0;
}
转载自:https://my.oschina.net/lopo/blog/260891;(转载请注明)
相关文章推荐
- iOS- 移动端Socket UDP协议广播机制的实现
- iOS 利用Socket UDP协议广播机制的实现
- iOS- 移动端Socket UDP协议广播机制的实现
- oc下实现局域网udp广播通讯使用开源框架GCDAsyncUdpSocket
- Socket API实现UDP广播
- Python+Socket实现基于UDP协议的局域网广播功能示例
- socket udp广播和多播的简单实现
- iOS 利用Socket UDP协议广播机制的实现
- Android编程实现基于局域网udp广播自动建立socket连接的方法
- iOS 飞屏功能的实现(UDPSocket协议广播机制)
- iOS —— 客户端Socket UDP协议广播机制的实现
- Swift udp实现根据端口号监听广播数据(利用GCDAsyncUdpSocket实现)
- Socket 实现UDP广播
- C#实现局域网UDP广播
- [QT]QT教程之实例分析[九] 网络广播程序(QUdpSocket)
- python实现socket通讯(UDP)
- python实现socket通讯(UDP)
- c#和UDP SOCKET广播
- Delphi用Socket IP/UDP局域网广播
- Java 实现Socket,和UDP连接的一个样例