正确使用UDP广播(C++代码)
来源:互联网 发布:安全设置阻止过期java 编辑:程序博客网 时间:2024/04/30 09:55
- // 服务器端
- // Server.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <WinSock2.h>
- #include <stdio.h>
- #include <iostream>
- using namespace std;
- #pragma comment(lib, "ws2_32.lib")
- const int MAX_BUF_LEN = 255;
- int _tmain(int argc, _TCHAR* 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(3779);
- sin.sin_addr.s_addr = INADDR_BROADCAST;
- bool bOpt = true;
- //设置该套接字为广播类型
- setsockopt(connect_socket, SOL_SOCKET, SO_BROADCAST, (char*)&bOpt, sizeof(bOpt));
- int nAddrLen = sizeof(SOCKADDR);
- char buff[MAX_BUF_LEN] = "";
- int nLoop = 0;
- while(1)
- {
- nLoop++;
- sprintf(buff, "%8d", nLoop);
- // 发送数据
- int nSendSize = sendto(connect_socket, buff, strlen(buff), 0, (SOCKADDR*)&sin, nAddrLen);
- if(SOCKET_ERROR == nSendSize)
- {
- err = WSAGetLastError();
- printf("/"sendto/" error!, error code is %d/n", err);
- return -1;
- }
- printf("Send: %s/n", buff);
- Sleep(500);
- }
- return 0;
- }
- // 客户端
- // Client.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <WinSock2.h>
- #include <stdio.h>
- #pragma comment(lib, "ws2_32.lib")
- const int MAX_BUF_LEN = 255;
- int _tmain(int argc, _TCHAR* 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(3779);
- sin.sin_addr.s_addr = 0;
- // 用来从网络上的广播地址接收数据
- SOCKADDR_IN sin_from;
- sin_from.sin_family = AF_INET;
- sin_from.sin_port = htons(3779);
- sin_from.sin_addr.s_addr = INADDR_BROADCAST;
- //设置该套接字为广播类型,
- bool bOpt = true;
- setsockopt(connect_socket, SOL_SOCKET, SO_BROADCAST, (char*)&bOpt, sizeof(bOpt));
- // 绑定套接字
- 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;
- }
0 0
- 正确使用UDP广播(C++代码)
- 正确使用UDP广播(C++代码)
- 正确使用UDP广播(C++代码)
- UDP广播的代码
- udp广播测试代码
- [C#]UDP实现广播
- C-UDP-广播模型
- 使用UDP广播
- 广播的正确使用
- C++ 网络编程之正确使用UDP广播及多播
- java udp广播代码示例
- udp 局域网广播发送代码
- udp 局域网广播接受代码
- (二)UDP广播
- 使用UDP发送广播报
- 正确使用 C++Builder组件缩写代码
- udp 广播 和 多播 java 代码
- 关于BLEserver端的代码广播使用无法正确执行Response
- 【甘道夫】info could only be replicated to 0 nodes, instead of 1
- sql
- Java接口,抽象类,内部类
- java单元测试(使用junit)
- C++第8周(春)项目1 实现复数类中的运算符重载
- 正确使用UDP广播(C++代码)
- OpenGL提示“pixel format with necessary capabilities not found”
- 电风扇
- 递归矩阵乘法-多线程算法
- IOS App开启iTunes文件共享
- 在pageinit和pagecreate事件中$.mobile.loading('show')不起作用
- 错误:error LNK1123: failure during conversion to COFF: file invalid or corrupt
- MFC消息机制
- 开关灯 动态规划