Cisco及华为网络技术论坛

在未连接的Socket上发送UDP数据报的方法


来源: 作者: 出处:Vlan9.com 2008-01-03 进入论坛
  • 关 键 词:
下一页 1 2 

UDP是一个简单的面向数据报的传输层协议,我们先站在UDP客户端的角度来看看如何发送一个UDP数据报,以及协议栈为发送一个UDP数据报做了哪些事情。

UDP数据报可以在未连接的socket上发送(使用sendto系统调用,指定目的地址),也可以在已连接的socket上发送(使用send系统调用,不用指定目的地址),下面我们分两种情况讨论。

下面是一个在未连接的socket上发送UDP数据的用户态程序示例(注:该程序的格式和风格相当不好,只是为临时测试使用。),该程序目前还只管发送,不处理接收,关于接收,我们后面再作分析:

#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include "my_inet.h"
#include <stdio.h>
#include <errno.h>
#include <arpa/inet.h>
#include <unistd.h>
int main()
{
        int i;
        struct sockaddr_in dest;
        dest.sin_family = MY_PF_INET;
        dest.sin_port = htons(16000);
        dest.sin_addr.s_addr = 0x013010AC;  //目的地址是172.16.48.1(网络字节序)
        //创建UDP数据报服务的socket。
        int fd = socket( MY_PF_INET, SOCK_DGRAM, MY_IPPROTO_UDP );
        if( fd < 0 ){
            perror("socket: ");
            return -1;
        }
        int bwrite = sendto( fd, "abcdefg", 7, 0, (struct sockaddr *)&dest, sizeof(dest) );
        if( bwrite == -1 ){
            perror("send: ");
            close(fd);
            return -1;
        }
        printf("sendto: %d\n", bwrite);
        close( fd );
        return 0;
                }

更多请看Cisco与华为技术网(Vlan9.com)UDP协议专题,或进入论坛讨论。

下一页 1 2 

更多专题 【相 关 文 章】

阅读前一章:LINUX软件学习技巧:iptables下udp穿越基础篇

阅读后一章:
vlan9_logo
相关专题

论坛精华
阅读排行榜
最新技术文档
热门关键字导读