资源简介
udp组播客户端和服务器端代码
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include “platform_head.h“
#include “uhttp.h“
#include “udp.h“
#define UDP_BUFLEN 512
//#define UDP_BROADCAST_IP “239.255.255.250“
#define UDP_BROADCAST_IP “255.255.255.255“
#define UDP_BROADCAST_PORT 1900
#define UDP_BROADCAST_HTTP_HEADER “NOTIFY * HTTP/1.1\r\nBroadcast: %s:%d\r\n“
void udp_broadcast_ip(void *param);
int udp_open(UDP_MULTICAST_st *udp)
{
struct sockaddr_in local_addr;
int sockfd;
unsigned int socklen;
DEBUG_Print(“[%s][%d] : ip[%s] port[%d] mode[%d].\n“ \
UTI_TRACE udp->ip udp->port udp->broadcast_mode);
/* 创建 socket 用于UDP通讯 */
sockfd = socket(AF_INET SOCK_DGRAM 0);
if (sockfd < 0)
{
DEBUG_Print(“[%s][%d] : socket creating error .\n“ UTI_TRACE);
exit(1);
}
socklen = sizeof(struct sockaddr_in);
memset(&udp->addr 0 socklen);
udp->addr.sin_family = AF_INET;
/* 设置对方的端口和IP信息 */
if(udp->port == 0)
udp->port = 9000;
udp->addr.sin_port = htons(udp->port);
/* 设置组播或单播地址 */
if (inet_pton(AF_INET udp->ip &udp->addr.sin_addr) <= 0)
{
DEBUG_Print(“[%s][%d] : Multicast ip address convert error.\n“ UTI_TRACE);
return -2;
}
memset(&local_addr 0 socklen);
/* 设置自己的端口和IP信息 */
local_addr.sin_family = AF_INET;
/* 设置为0,表示让系统自动分配空闲端口 */
local_addr.sin_port = 0;
memset(udp->local_ip 0 sizeof(udp->local_ip));
NETWORK_GetIPAddr(NETWORK_INTERFACE_NAME udp->local_ip);
local_addr.sin_addr.s_addr = inet_addr(udp->local_ip);
if(local_addr.sin_addr.s_addr == INADDR_NONE)
{
local_addr.sin_addr.s_addr = INADDR_ANY;
DEBUG_Print(“[%s][%d] : Local ip convert error use INADDR_ANY.\n“ UTI_TRACE);
}
/* 绑定自己的端口和IP信息到socket上 */
if (bind(sockfd (struct sockaddr *)&local_addrsizeof(struct sockaddr_in)) == -1)
{
DEBUG_Print(“[%s][%d] : Bind error.\n“ UTI_TRACE);
return -5;
}
udp->sock = sockfd;
return sockfd;
}
int udp_open_client(UDP_MULTICAST_st *udp)
{
//struct sockaddr_in local_addr;
int sockfd;
//struct ifreq ifr;
struct ip_mreq multiCast;
DEBUG_Print(“[%s][%d] : ip[%s] port[%d] mode[%d].\n“ \
UTI_TRACE udp->ip udp->port udp->broadcast_mode);
/* 创建 socket 用于UDP通讯 */
sockfd = socket(AF_INET SOCK_DGRAM IPPROTO_UDP);
if (sockfd < 0)
{
DEBUG_Print(“[%s][%d] : socket creating error .\n“ UTI_TRACE);
exit(1);
}
memset(&udp->addr 0 sizeof(udp->addr));
udp->addr.sin_family = AF_INET;
udp->addr.sin_port = htons(udp->port);
udp->addr.sin_addr.s_addr = inet_addr(udp->ip);//inet_addr(udp->ip) INADDR_ANY
/* 绑定自己的端口和IP信息到socket上 */
if (bind(sockfd (struct sockaddr *)&udp->addrsizeof(struct sockaddr_in)) == -1)
- 上一篇:bpsk在瑞利信道下的误码率与信噪比的关系
- 下一篇:Django个人博客系统 课件
相关资源
- FTP客户端服务器端全部代码
- 网狐U3D旗舰版源码全套包含服务器端
- SOCKET TCP 文件传输 客户端 服务器端
- 客户端服务器端TCP/IP通信控件源代码
- 仿QQ VS2010聊天程序服务器端、客户端
- VisualSVN-Server-4.2.1-win32 官方最新版 2
- TCP-Unity服务器端
- .NET 极光推送的服务器端推送比较全面
- 支持 tcp udp ipv4 ipv6 跨平台运行 有服务
- Qt编写TCP通讯程序 客户端与服务器端
- MFC多线程文件传输(客户端、服务器
- qt 客户端和服务器端源代码
- TFTP客户端服务器程序
- Indy10文件传输无过程(附服务器端以
- CSharp写的UDP例程
- Qt写的UDP组播服务端
- UMI服务器端读写狗工具
- Socket服务器端断开后重新打开,客户
- QT UDP组播的实现
- 计算机网络课程设计ftp协议客户端和
- WinSock小型聊天工具有界面
- OPC服务器端源代码
- UDP 组播 vc
- 使用winsock传输并显示图片包括服务器
- 支付宝支付之APP支付接口 服务器端代
- 石器时代SF服务器端Lua脚本
- qt 客户和服务器端
- Socket 多线程文件传输至服务器端 客
评论
共有 条评论