2025-11-28 00:35:46 +09:00
..
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00

SUMMARY
======= 
 
The IPHDRINC samples demonstrate the use of raw sockets and the header include
option for both IPv4 and IPv6. It does this by sending raw UDP packets and by
setting the IP header include option. This means each raw send has to include
the IP and UDP header before the data payload. This sample allows you to set
the source IP and port in the outgoing IP header to an arbitrary value.

Also note that the "raw" behavior between the IPv4 and IPv6 stacks are not
entirely equal. The IPv4 stack will fragment the data as necessary (i.e.
you have no control over fragmentation) while the IPv6 stack assumes the
caller will do all the fragmentation required (attempting to send something
larger than the MTU will fail).


DISCLAIMER
==========
From Network Programming for Microsoft Windows, Second Edition by Anthony
Jones and James Ohlund.  Copyright 2002.  Reproduced by permission of
Microsoft Press.  All rights reserved. 


FILES
=====

README.TXT	Readme file
MAKEFILE	Makefile file
RAWUDP.C	Source for sending raw UDP packets
RESOLVE.C	Common routines for resolving and printing addresses


PLATFORM SUPORTED
=================

Windows 2000 and later. The IP_HDRINCL option is availalbe only on Windows
2000 and later. The IPV6_HDRINCL option is supported on Windows XP and later
(the IPv6 stack must be installed).


RUNNING THE SERVER AND CLIENT APPLICATIONS
==========================================

To build, type "nmake" at the command line.

To run the samples, please follow the usage specified below

usage: rawudp.exe [options]

    Options:
        -a  4|6    Address family
        -sa addr   From (sender) port number
        -sp int    From (sender) IP address
        -da addr   To (recipient) port number
        -dp int    To (recipient) IP address
        -n  int    Number of times to read message
        -m  str    String message to fill packet data with
        -p  proto  Protocol value
        -r  port   Receive raw (SOCK_RAW) datagrams on the given port
        -rd port   Receive datagram (SOCK_DGRAM) on the given port
        -t  mtu    MTU size (required for fragmentation)
        -z  int    Size of message to send

For IPv4:
    To receive packets on interface x.y.z.w and port 5000:
        iphdrinc.exe -sa x.y.z.w -rd 5000

    To send raw UDP packets to be received by the receiver above:
        iphdrinc.exe -sa 1.2.3.4 -sp 1234 -da x.y.z.w -dp 5000

For IPv6:
    To receive packets on interface fe80::xyzw%a and port 5000:
        iphdrinc.exe -sa fe80::xyzw%a -rd 5000 

    To send raw UDP packets to be received by the receiver above:
        iphdrinc.exe -sa fe80::1234 -sp 1234 -da fe80::xyzw%b -dp 5000

        NOTE: The sender's destination scope-id (%b) must be the interface
              index that the receive is located on.