?lang_form? ?lang_select? ?lang_submit? ?lang_endform?
{HEADER END}
{BLAME START}

library

?curdirlinks? -

Blame information for rev 32

Line No. Rev Author Line
1 32 kaklik /*********************************************************************
2 *
3 * Microchip Announcement Detector
4 *
5 *********************************************************************
6 * FileName: MCHPDetect.cpp
7 * Dependencies: Must be linked with Ws2_32.lib
8 * Processor: x86
9 * Complier: Microsoft Visual C++ 6.0
10 * Borland C++ Builder 6
11 * Company: Microchip Technology, Inc.
12 *
13 * Software License Agreement
14 *
15 * This software is owned by Microchip Technology Inc. ("Microchip")
16 * and is supplied to you for use exclusively as described in the
17 * associated software agreement. This software is protected by
18 * software and other intellectual property laws. Any use in
19 * violation of the software license may subject the user to criminal
20 * sanctions as well as civil liability. Copyright 2006 Microchip
21 * Technology Inc. All rights reserved.
22 *
23 * This software is provided "AS IS." MICROCHIP DISCLAIMS ALL
24 * WARRANTIES, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, NOT LIMITED
25 * TO MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
26 * INFRINGEMENT. Microchip shall in no event be liable for special,
27 * incidental, or consequential damages.
28 *
29 * Author Date Comment
30 *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
31 * Howard Schlunder 10/8/04 Original
32 ********************************************************************/
33  
34 #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
35  
36 #define UDPPort 30303
37  
38 #include <Winsock2.h>
39 #include <iostream>
40 #include <stdio.h>
41  
42  
43  
44 int main(int argc, char* argv[])
45 {
46 WSADATA WSAData;
47 SOCKET MySocket;
48 char PacketPayload[1500];
49 int ret;
50 sockaddr_in MySocketInfo;
51 sockaddr RemoteAddr;
52 int RemoteAddrSize;
53 unsigned int MessageCount = 1;
54  
55  
56 if(WSAStartup((short)0x0202, &WSAData) != 0)
57 {
58 printf("WSAStartup failed!\n");
59 return 1;
60 }
61  
62  
63 MySocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
64  
65 if(MySocket == INVALID_SOCKET)
66 {
67 std::cout << "Unable to create a socket.\n";
68 WSACleanup();
69 return 1;
70 }
71  
72  
73 MySocketInfo.sin_family = AF_INET;
74 MySocketInfo.sin_port = htons(UDPPort);
75 MySocketInfo.sin_addr.S_un.S_addr = htonl(ADDR_ANY);
76 ZeroMemory(&MySocketInfo.sin_zero, sizeof(MySocketInfo.sin_zero));
77  
78 ret = bind(MySocket, (const struct sockaddr *)&MySocketInfo, sizeof(MySocketInfo));
79 if(ret == INVALID_SOCKET)
80 {
81 std::cout << "Bind procedure failed.\n";
82 WSACleanup();
83 return 1;
84 }
85  
86 RemoteAddrSize = sizeof(RemoteAddr);
87  
88 std::cout << "Microchip Announcement Detector\n"
89 "Copyright (c) 2004 Microchip Technology, Inc. Ver. 1.0 (Oct 06 2004)\n"
90 "Written by Howard Henry Schlunder\n\n"
91 "Waiting for data on UDP port " << UDPPort << "...\n\n";
92  
93  
94 while(1)
95 {
96 ret = recvfrom(MySocket, PacketPayload, sizeof(PacketPayload), 0, &RemoteAddr, &RemoteAddrSize);
97 if(ret == SOCKET_ERROR)
98 {
99 std::cout << "Socket error while trying to receive.\n";
100 WSACleanup();
101 return 1;
102 }
103  
104 PacketPayload[ret] = 0; // Null terminate
105  
106 std::cout << "Total packets received: " << MessageCount++ << "\n"
107 << "Received " << ret << " bytes of data from "
108 << (unsigned char)RemoteAddr.sa_data[2] + '\0' << '.'
109 << (unsigned char)RemoteAddr.sa_data[3] + '\0' << '.'
110 << (unsigned char)RemoteAddr.sa_data[4] + '\0' << '.'
111 << (unsigned char)RemoteAddr.sa_data[5] + '\0' << '\n'
112 << PacketPayload << "\n\n";
113 }
114  
115  
116 WSACleanup();
117 return 0;
118 }
119  
{BLAME END}
{FOOTER START}

Powered by WebSVN v2.8.3