设为首页 加入收藏

TOP

Beej’s Guide Network to Programming 系列连载15
2014-11-24 00:36:32 来源: 作者: 【 】 浏览:44
Tags:Beej Guide Network Programming 系列 连载
上一篇: http://www.2cto.com/kf/201112/115686.html

5.8. sendto()和recvfrom() ---和我说话,数据报
“这很不错啊”,你说,“但是你还没有讲无连接数据报套接字呢?” 没问题,现在我们开始这个内容。

既然数据报套接字不是连接到远程主机的,那么在我们发送一个包之前需要什么信息呢 不错,是目标地址!

sendto()函数原型:

int sendto(intsockfd, const void *msg, int len, unsigned int flags,

const struct sockaddr *to, socklen_ttolen);

你已经看到了,除了另外的两个信息外,其余的和函数 send() 是一样的。 to 是个指向数据结构 struct sockaddr 的指针,它包含了目的地的IP 地址和端口信息。tolen 可以简单地设置为sizeof(struct sockaddr)。 和函数 send() 类似,sendto()返回实际发送的字节数(它也可能小于你想要发送的字节数!),或者在错误的时候返回-1。

recvfrom()函数原型:

int recvfrom(intsockfd, void *buf, int len, unsigned int flags,

struct sockaddr *from, int *fromlen);

又一次,除了两个增加的参数外,这个函数和 recv() 也是一样的。from 是一个指向局部数据结构 struct sockaddr 的指针,它的内容是源机器的IP 地址和端口信息。fromlen 是个 int 型的局部指针,它的初始值为 sizeof(struct sockaddr)。函数调用返回后,fromlen保存着实际储存在 from 中的地址的长度。

recvfrom() 返回收到的字节长度,或者在发生错误后返回 -1。

摘自 xiaobin_HLJ80的专栏

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇归并排序(非递归) 下一篇Beej’s Guide Network to Progra..

评论

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