91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

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? {
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? {
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)

評論

共有 條評論