久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

SOCKET UDP組播 實(shí)例

 青松卓然 2012-09-04

阻塞式的基于UDP的組播程序代碼,,在Windows XP上測(cè)試通過~

客戶端Sender.cpp

#include <WINSOCK.H>
#include <stdio.h>
#define HELLO_PORT  7905    
#define HELLO_GROUP "228.4.5.6"    
#pragma comment(lib, "WSOCK32.lib")
 
int main(int argc, char *argv[])    
{    
  WSADATA     wsaData;
  WORD wVersionRequested;
  wVersionRequested = MAKEWORD(1,1);
  // Initialize Windows socket library
  WSAStartup(0x0202, &wsaData);
    struct sockaddr_in addr;    
    int fd, cnt;    
    char *message="Hello, World!";    
    /* create what looks like an ordinary UDP socket */    
    if ((fd=socket(AF_INET,SOCK_DGRAM,0)) < 0)     
    {    
        perror("socket");    
        exit(1);    
    }    
    /* set up destination address */    
    memset(&addr,0,sizeof(addr));    
    addr.sin_family=AF_INET;    
    addr.sin_addr.s_addr=inet_addr(HELLO_GROUP);    
    addr.sin_port=htons(HELLO_PORT);    
    /* now just sendto() our destination! */    
    while (1)    
    {    
        if (sendto(fd,message, strlen(message), 0, (struct sockaddr *) &addr, sizeof(addr)) < 0)     
        {    
            perror("sendto");    
            exit(1);    
        }    
    printf("Send %s\n",message);
        Sleep(1000);    
    }    
    return 0;    
}    

 

服務(wù)器端Receiver.cpp

#include <WINSOCK.H>
#include <stdio.h>
#define HELLO_PORT  7905    
#define HELLO_GROUP "228.4.5.6"    
#define MSGBUFSIZE 256    
#pragma comment(lib, "WSOCK32.lib")
int main(int argc, char *argv[])    
{    
  WSADATA     wsaData;
  WORD wVersionRequested;// Version
  wVersionRequested = MAKEWORD(1,1);//Version Info
  // Initialize Windows socket library
  WSAStartup(wVersionRequested, &wsaData);
    struct sockaddr_in addr;    
    int fd, nbytes,addrlen;    
    struct ip_mreq mreq;    
    char msgbuf[MSGBUFSIZE];    
    u_int yes=1; /*** MODIFICATION TO ORIGINAL */    
    /* create what looks like an ordinary UDP socket */    
    if ((fd=socket(AF_INET,SOCK_DGRAM,0)) < 0)     
    {    
        perror("socket");    
        exit(1);    
    }    
    /**** MODIFICATION TO ORIGINAL */    
    /* allow multiple sockets to use the same PORT number */    
    if (setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,(char *)&yes,sizeof(yes)) < 0)     
    {    
        perror("Reusing ADDR failed");    
        exit(1);    
    }    
    /*** END OF MODIFICATION TO ORIGINAL */    
    /* set up destination address */    
    memset(&addr,0,sizeof(addr));    
    addr.sin_family=AF_INET;    
    addr.sin_addr.s_addr=htonl(INADDR_ANY); /* N.B.: differs from sender */    
    addr.sin_port=htons(HELLO_PORT);    
    /* bind to receive address */    
    if (bind(fd,(struct sockaddr *) &addr,sizeof(addr)) < 0)    
    {    
        perror("bind");    
        exit(1);    
    }    
    /* use setsockopt() to request that the kernel join a multicast group */    
    mreq.imr_multiaddr.s_addr=inet_addr(HELLO_GROUP);    
    mreq.imr_interface.s_addr=htonl(INADDR_ANY);    
    if (setsockopt(fd,IPPROTO_IP,IP_ADD_MEMBERSHIP,(char *)&mreq,sizeof(mreq)) < 0)     
    {    
    int err=GetLastError();
        printf("setsockopt:%d",err);    
        exit(1);    
    }    
    /* now just enter a read-print loop */    
    while (1)     
    {    
        //ssize_t recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);    
        addrlen=sizeof(addr);  
    printf("Receiving..."); 
        //if((nbytes=recvfrom(fd,msgbuf,MSGBUFSIZE,0,NULL,NULL))<0)
    if ((nbytes=recvfrom(fd, msgbuf, MSGBUFSIZE, 0, (struct sockaddr *) &addr, (int *)&addrlen)) < 0)     
        {    
            perror("recvfrom");    
            exit(1);    
        } msgbuf[nbytes]  ='\0'; 
        printf("%s",msgbuf);    
    }    
    return 0;    
}  

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多