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

来源: 作者: 2007-10-02 出处:pcdog.com

arp  协议  
下一页 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;
                }


更多内容请看PCdog.com--UDP协议专题
下一页 1 2 
上一篇:适合移动办公安全接入VPN设备概述
下一篇:网吧的技术漏洞应如何封杀?