delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2002/04/30/19:17:29

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Message-ID: <3CCF2566.5C8574B1@cs.cmu.edu>
Date: Tue, 30 Apr 2002 19:14:46 -0400
From: Yang-hua Chu <yhchu AT cs DOT cmu DOT edu>
X-Accept-Language: en
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
CC: eugeneng AT cs DOT cmu DOT edu
Subject: support for multicast socket

Hi,

I'm porting a network protocol (about 50K lines of code) developed in
UNIX into cygwin, and I ran into problems when I want to open a
multicast socket.

When I bind() a network socket to a multicast address/port, I got an
error EADDRNOTAVAIL.  Below is a distilled sample code, sample output,
and my cygwin configuration.

Has anyone been successful in using multicast in cygwin?  If multicast
socket is not currently implemented in cygwin, are there plans to
implement it in the near future?  Any pointer is much appreciated.

Thanks.  Yang-hua


------------------------------
Sample code to open a multicast socket

#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <strings.h>
#include <unistd.h>
#include <stdio.h>
#include <netdb.h>

#include <sys/socket.h>
#include <netinet/in.h>	/* sockaddr_in{} and other Internet defns */

int main(int argc, char *argv[]) {
  char *name = "235.1.2.3";
  int port = 5000;

  // resolve the IP address
  struct hostent *host;
  if ((host = gethostbyname(name)) == NULL) {
    printf("\nhostname %s not found", name);
    return -1;
  }
  int ip = htonl(*(int *)host->h_addr);

  int fd = socket(AF_INET, SOCK_DGRAM, 0);
  
  struct sockaddr_in sock;
  bzero((char *)(&sock), sizeof(sock));
  sock.sin_family = AF_INET;
  sock.sin_addr.s_addr = htonl(ip);
  sock.sin_port = htons(port);
  if (bind(fd, (struct sockaddr *)&sock, sizeof(sock)) < 0) {
    perror("bind");
  } else {
    printf("bind to multicast address OK\n");
  }
  close(fd);
}

------------------------
Sample output

[yhchu]/cygdrive/c/:{555}:$ ./a.exe
bind: errno EADDRNOTAVAIL triggered

-------------------------
Other relevant information about my cygwin

Cygwin Win95/NT Configuration Diagnostics
Current System Time: Tue Apr 30 18:55:29 2002

Windows NT Ver 4.0 Build 1381 Service Pack 5

Path:	C:\cygwin\usr\local\bin
	C:\cygwin\bin
	C:\cygwin\bin
	c:\Perl\bin\
	c:\WINNT\system32
	c:\WINNT
	c:\PROGRA~1\CMU\KCLIENT\bin32
	c:\PROGRA~1\Transarc\AFS\AFSCLI~1\PROGRAM
	c:\WINNT\System32\WBEM
	C:\cygwin\bin
	c:\Program Files\Microsoft Visual Studio\Common\Tools\WinNT
	c:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin
	c:\Program Files\Microsoft Visual Studio\Common\Tools
	c:\Program Files\Microsoft Visual Studio\VC98\bin

SysDir: C:\WINNT\System32
WinDir: C:\WINNT

CYGWIN = `ntsec tty'
HOME = `c:\'
MAKE_MODE = `unix'
PWD = `/cygdrive/h/cmcl-yhchu/yhchu/Code'
USER = `yhchu'

  751k 2002/02/25 C:\cygwin\bin\cygwin1.dll - os=4.0 img=1.0 sys=4.0
                  "cygwin1.dll" v0.0 ts=2002/2/25 11:14
    Cygwin DLL version info:
        DLL version: 1.3.10
        DLL epoch: 19
        DLL bad signal mask: 19005
        DLL old termios: 5
        DLL malloc env: 28
        API major: 0
        API minor: 51
        Shared data: 3
        DLL identifier: cygwin1
        Mount registry: 2
        Cygnus registry name: Cygnus Solutions
        Cygwin registry name: Cygwin
        Program options name: Program Options
        Cygwin mount registry name: mounts v2
        Cygdrive flags: cygdrive flags
        Cygdrive prefix: cygdrive prefix
        Cygdrive default prefix: 
        Build date: Mon Feb 25 11:14:34 EST 2002
        Shared id: cygwin1S3

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019