设为首页 加入收藏

TOP

基于Linux下的UDP编程(二)
2014-11-24 12:02:50 来源: 作者: 【 】 浏览:1
Tags:基于 Linux UDP 编程
uct sockaddr *to,socklen_ttolen);


2>函数功能:


向目标主机发送消息


3>函数形参:


s:套接字描述符。


*msg:发送缓冲区


len:待发送数据的长度


flags:控制选项,一般设置为0或取下面的值


(1)MSG_OOB:在指定的套接字上发送带外数据(out-of-band data),该类型的套接字必须支持带外数据(eg:SOCK_STREAM).


(2)MSG_DONTROUTE:通过最直接的路径发送数据,而忽略下层协议的路由设置。


to:用于指定目的地址


tolen:目的地址的长度。


4>函数返回值:


执行成功后返回实际发送数据的字节数,出错返回-1,错误代码存入errno中。


5>函数举例:


char send_buf[BUFFERSIZE];


struct sockaddr_in addr_client;



memset(&addr_client,0,sizeof(struct sockaddr_in));


addr_client.sin_family = AF_INET;


addr_client.sin_port = htons(DEST_PORT);


if(inet_aton(“172.17.242.131”,&addr_client.sin_addr)<0){


perror(“inet_aton”);


exit(1);


}


if(sendto(sock_fd,send_buf,len,0,(strut sockaddr*)&addr_client,sizeof(struct sockaddr_in)) <0){


perror(“sendto”);


exit(1);


}


5.recvfrom


1>函数原型:


#include


#include


ssize_t recvfrom(int s,void *buf,size_t len,intflags,struct sockaddr *from,socklen_t *fromlen);


2>函数功能:接收数据


3>函数形参:


int s:套接字描述符


buf:指向接收缓冲区,接收到的数据将放在这个指针所指向的内存空间。


len:指定了缓冲区的大小。


flags:控制选项,一般设置为0或取以下值


(1)MSG_OOB:请求接收带外数据


(2)MSG_PEEK:只查看数据而不读出


(3)MSG_WAITALL:只在接收缓冲区时才返回。


*from:保存了接收数据报的源地址。


*fromlen:参数fromlen在调用recvfrom前为参数from的长度,调用recvfrom后将保存from的实际大小。


4>函数返回值:


执行成功后返回实际接收到数据的字节数,出错时则返回-1,错误代码存入errno中。


5>函数实例:


char recv_buf[BUFFERSIZE];


struct sockaddr_in addr_client;


int src_len;


src_len = sizeof(struct sockaddr_in);


int src_len;


src_len = sizeof(struct sockaddr_in);


if(recvfrom(sock_fd,recv_buf,sizeof(recv_buf),0,(structsockaddr *)&src_addr,&src_len)<0){


perror(“again_recvfrom”);


exit(1);


}


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux网络编程中的地址问题 下一篇基于Linux的TCP网络编程

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)
·[ Linux运维学习 ] (2025-12-26 02:52:27)
·HTTPS 详解一:附带 (2025-12-26 02:20:37)
·TCP/IP协议到底在讲 (2025-12-26 02:20:34)