zoukankan      html  css  js  c++  java
  • C语言sendto()函数:经socket传送数据

    相关函数:send, sendmsg, recv, recvfrom, socket

    头文件:#include <sys/types.h>   #include <sys/socket.h>

    定义函数:int sendto(int s, const void * msg, int len, unsigned int flags, const struct sockaddr * to, int tolen);

    函数说明:sendto() 用来将数据由指定的socket 传给对方主机. 参数s 为已建好连线的socket, 如果利用UDP协议则不需经过连线操作. 参数msg 指向欲连线的数据内容, 参数flags 一般设0, 详细描述请参考send(). 参数to 用来指定欲传送的网络地址, 结构sockaddr 请参考bind(). 参数tolen 为sockaddr 的结果长度.

    返回值:成功则返回实际传送出去的字符数, 失败返回-1, 错误原因存于errno 中.

    错误代码:
    1、EBADF 参数s 非法的socket 处理代码.
    2、EFAULT 参数中有一指针指向无法存取的内存空间.
    3、WNOTSOCK canshu s 为一文件描述词, 非socket.
    4、EINTR 被信号所中断.
    5、EAGAIN 此动作会令进程阻断, 但参数s 的soket 为补课阻断的.
    6、ENOBUFS 系统的缓冲内存不足.
    7、EINVAL 传给系统调用的参数不正确.

    范例
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet.in.h>
    #include <arpa.inet.h>
    #define PORT 2345 /*使用的port */
    main()
    {
        int sockfd, len;
        struct sockaddr_in addr;
        char buffer[256];
        //建立socket
        if(sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
        {
            perror ("socket");
            exit(1);
        }
        //填写sockaddr_in 结构
        bzero(&addr, sizeof(addr));
        addr.sin_family = AF_INET;
        addr.sin_port = htons(PORT);
        addr.sin_addr = hton1(INADDR_ANY);
        if(bind(sockfd, &addr, sizeof(addr)) < 0)
        {
            perror("connect");
            exit(1);
        }
        while(1)
        {
            bezro(buffer, sizeof(buffer));
            len = recvfrom(socket, buffer, sizeof(buffer), 0, &addr &addr_len);
            //显示client 端的网络地址
            printf("receive from %s ", inet_ntoa(addr.sin_addr));
            //将字串返回给client 端
           sendto(sockfd, buffer, len, 0, &addr, addr_len);
        }
    }

  • 相关阅读:
    Eclipse安装Hadoop插件
    (转)Ubuntu14.0.4中hadoop2.4.0伪分布模式配置
    Hadoop--DataNode无法启动
    启动与关闭hadoop
    hadoop中执行命令时发生错误
    strings命令
    Deriving data from ElasticSearch Engine
    elasticsearch data importing
    reading words in your computer and changing to female voice, linux festival text2wave saving wav files
    DDNS client on a Linux machine
  • 原文地址:https://www.cnblogs.com/killer-xc/p/6671341.html
Copyright © 2011-2022 走看看