From 52c5fc544bb3ffa8629ac8c7e43ceb2c00002e0b Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Fri, 22 Jun 2007 12:27:46 +0000 Subject: [PATCH] Add plrs_subs_win.c git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/map65@404 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- plrs_subs_win.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 plrs_subs_win.c diff --git a/plrs_subs_win.c b/plrs_subs_win.c new file mode 100644 index 000000000..256ec07ed --- /dev/null +++ b/plrs_subs_win.c @@ -0,0 +1,63 @@ +#include +#include +#include +#include + +#define HELLO_PORT 50004 +#define HELLO_GROUP "239.255.0.0" + +struct sockaddr_in addr; +int fd; + +void __stdcall SETUP_SSOCKET(void) +{ + struct ip_mreq mreq; + + // Make sure that we have compatible Winsock support + WORD wVersionRequested; + WSADATA wsaData; + int err; + + wVersionRequested = MAKEWORD( 2, 2 ); + err = WSAStartup( wVersionRequested, &wsaData ); + if ( err != 0 ) { + /* Tell the user that we could not find a usable */ + /* WinSock DLL. */ + exit(1); + } + + /* Confirm that the WinSock DLL supports 2.2.*/ + /* Note that if the DLL supports versions greater */ + /* than 2.2 in addition to 2.2, it will still return */ + /* 2.2 in wVersion since that is the version we */ + /* requested. */ + + if ( LOBYTE( wsaData.wVersion ) != 2 || + HIBYTE( wsaData.wVersion ) != 2 ) { + /* Tell the user that we could not find a usable */ + /* WinSock DLL. */ + WSACleanup( ); + exit(1); + } + /* The WinSock DLL is acceptable. Proceed. */ + + /* create what looks like an ordinary UDP socket */ + if ((fd=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) < 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); +} + +void __stdcall SEND_PKT(char buf[]) +{ + if (sendto(fd,buf,1416,0, + (struct sockaddr *) &addr, sizeof(addr)) < 0) { + perror("sendto"); + exit(1);} +}