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

文章作者 100test 发表时间 2007:10:10 11:48:09
来源 100Test.Com百考试题网


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

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

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

#include 

#include 

#include 

#include "my_inet.h"

#include 

#include 

#include 

#include 

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.

                }


相关文章


Windows与Linux最简单直接的区别是什么
FedoracoreLinux网络配置命令概括介绍
新手学堂:Linux系统下的BT软件详细介绍
在RHEL5服务器上远程桌面(VNC)的配置
在未连接的Socket上发送UDP数据报的方法
Linux领域热点:Linux移动终端已经启航
Apache的静态_动态编译在WEB环境的应用
绑定MAC地址防止ARP欺骗
嵌入应用:如何制作和使用Jffs2文件系统
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛