资源简介
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个人博客系统 课件
相关资源
- SOCKET 网络编程 计算机网络 作业 客户
- UDP组播的发送和接收程序
- 61850客户端服务端测试程序
- 简单服务器端口监听和显示客户端发
- rabbitMq客户端服务
- linux c下的ftp客户端和服务器端
- conquer征服服务器端+数据库2
- conquer征服服务器端+数据库1
- mina2 cs 客户端服务器通信 已经实现完
- 安卓订餐系统源码
- mms61850源码,电力客户端服务端通讯
- 简易iView-admin后台管理系统配套Expre
- 《ARM Linux嵌入式网络控制系统》书中
- Xutils上传照片源码(客户端以及服务
- Client/Server模式下的服务器端
- 通过winsock实现客户端向服务器端传输
- struts2实现服务器端校验
- 简单的安卓登陆界面源码
- Unity通信,服务器端与客户端的互传消
- 基于tcp的异步套接字客户端服务端通
- 酒店点餐系统带客户端服务端数据库
- UDP 类 UDP DLL 客户端 服务器端测试程
- 考试系统程序包括客户端服务端sock
- 辛巴商贸通最新版9.10.7(20150504更新)
- 木马制作包含客户端,服务器端
- S7-1500做服务器端与第三方设备TCP通信
- 陌陌聊天软件(客户端+服务器端+数据
- 编译好的Windows版Ngrok服务器端
- 类似QQ的FREEICQ服务器端和客户端
- GPRS数据接收服务器端
评论
共有 条评论