IP广播

(-). socket选项和I/O控制命令
1. Socket选项
(1). def – 网络协议是分层,每一层又有不同的协议,因此不同层有不同层的选项,每一层不同协议又有各自的选项。
应用层: SOL_SOCKET
传输层: IPROTO_TCP, IPPROTO_UDP
网络层: IPPROTO_IP

int getsockopt(
         SOCKET s,              //套接字句柄
         int level,             //套接字层次
         int optname,           //套接字选项
         char FAR* optval,      //缓冲区,请求的值将会被返回到这里存储
        int FAR*  optlen        //指定犯冲去大小
    );
    int setsockopt (  
        SOCKET s,               //套接字句柄
        int level,              //套接字层次
        int optname,            //套接字选项
        const char FAR * optval,  //制定缓冲区
        int optlen                //缓冲区大小
    ); 
2. Socket控制命令
def -- I/O控制命令用来控制套接字的行为或者获取套接字上的未决I/O信息
常见命令:
FIONBIO     将套接字设置为非阻塞模式
FIONREAD    获取套接字要读取数据的个数
int ioctlsocket(
        _In_    SOCKET s,       //[in] A descriptor identifying a socket.  
        _In_    long   cmd,     //[in] The command to perform on the socket s.
        _Inout_ u_long *argp    //[in/out] A pointer to a parameter for cmd.
    );

    int WSAIoctl(
        _In_  SOCKET                             s,
        _In_  DWORD                              dwIoControlCode,
        _In_  LPVOID                             lpvInBuffer,
        _In_  DWORD                              cbInBuffer,
        _Out_ LPVOID                             lpvOutBuffer,
        _In_  DWORD                              cbOutBuffer,
        _Out_ LPDWORD                            lpcbBytesReturned,
        _In_  LPWSAOVERLAPPED                    lpOverlapped,
        _In_  LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
    );
s [in] 
A descriptor identifying a socket.
套接字句柄

dwIoControlCode [in] 
The control code of operation to perform.
//套接字控制命令

lpvInBuffer [in] 
A pointer to the input buffer.
输入缓冲区

cbInBuffer [in] 
The size, in bytes, of the input buffer.
输入缓冲区长度

lpvOutBuffer [out] 
A pointer to the output buffer.
输出缓冲区

cbOutBuffer [in] 
The size, in bytes, of the output buffer.
输出缓冲区长度

lpcbBytesReturned [out] 
A pointer to actual number of bytes of output.
接收实际字节数

lpOverlapped [in] 
A pointer to a WSAOVERLAPPED structure (ignored for non-overlapped sockets).
指向重叠结构的结构体(如果没有使用重叠模型,忽视此参数)

lpCompletionRoutine [in] 
Note  A pointer to the completion routine called when the operation has been completed (ignored for non-overlapped sockets). 
当选项被完成后,完成例程被调用,如果没有使用重叠模型,此参数被忽略

(二). 广播通信一般步骤
    发送端:
    1. 创建套接字
    2. 设置套接字选项(SOL_SOCKET,SO_BROADCAST)
    3. 向制定端口和广播IP INADDR_BROADCAST或者255.255.255.255发送数据
    注:
        广播有专用广播地址255.255.255.255或者宏INADDR_BROADCAST,当IP地址指定为广播地址时候可以将数据发送给本地子网的所有机器.

    接收端:
    1. 创建套接字。
    2. 绑定本地Ip和端口。
    3. 接收数据

详细代码请参照上传工程:http://download.csdn.net/detail/timeinsist/9874862

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值