zoukankan      html  css  js  c++  java
  • Linux网络编程 recvmsg()函数 实例

    本程序是recvmsg()函数的简单应用:

    /* ************************************************************************
    * Filename: msg.c
    * Description:
    * Version: 1.0
    * Created: 2011年08月16日 20时07分52秒
    * Revision: none
    * Compiler: gcc
    * Author: YOUR NAME (),
    * Company:
    * ***********************************************************************
    */
    #include
    <stdio.h>
    #include
    <stdlib.h>
    #include
    <string.h>
    #include
    <unistd.h>
    #include
    <sys/socket.h>
    #include
    <netinet/in.h>
    #include
    <arpa/inet.h>

    void SendMsgRecvMsg()
    {
    int sock_fd;
    socklen_t sender_len;
    struct msghdr msg;
    struct iovec iov;
    struct sockaddr_in receiver_addr,sender_addr;
    char line[10];

    sock_fd
    = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
    if(sock_fd < 0)
    {
    perror(
    "socket error");
    close(sock_fd);
    exit(
    0);
    }

    receiver_addr.sin_family
    = AF_INET;
    receiver_addr.sin_port
    = htons(5000);
    receiver_addr.sin_addr.s_addr
    = htonl(INADDR_ANY);

    if(bind(sock_fd,(struct sockaddr*)&receiver_addr,sizeof(receiver_addr)) < 0)
    {
    perror(
    "bind error");
    close(sock_fd);
    exit(
    0);
    }

    sender_len
    = sizeof(sender_addr);

    msg.msg_name
    = &sender_addr;
    msg.msg_namelen
    = sender_len;
    msg.msg_iov
    = &iov;
    msg.msg_iovlen
    = 1;
    msg.msg_iov
    ->iov_base = line;
    msg.msg_iov
    ->iov_len = 10;
    msg.msg_control
    = 0;
    msg.msg_controllen
    = 0;
    msg.msg_flags
    = 0;

    printf(
    "wait...\n");
    recvmsg(sock_fd,
    &msg,0);
    printf(
    "wait is over!\n");
    printf(
    "the msg is %s\n",(char *)(msg.msg_iov->iov_base));
    close(sock_fd);
    }

    int main(int argc ,char *argv[])
    {
    SendMsgRecvMsg();
    return 0;
    }

    显示效果如下:

  • 相关阅读:
    java 浅显的会议预约-没有测试过
    Postgresql 与 Spring的集成
    对象转JSON正则查找替换
    Java 对象与JSONString的互相转换
    excel 中涉及到金额显示0E-8的 可以使用以下语句来把excel导出修改为0
    Java 非正则方式校验数据
    泛型与反射的使用
    正则表达式,匹配 URL 是IP还是域名
    对外接口加密
    自定义SQL查询的使用
  • 原文地址:https://www.cnblogs.com/hnrainll/p/2141478.html
Copyright © 2011-2022 走看看