linux c 下的 tcp的recv函数和udp的recvfrom函数 参数对比

原创 2015年11月17日 16:17:08
recv()是编程语言函数。
函数原型int recv( _In_ SOCKET s, _Out_ char *buf, _In_ int len, _In_ int flags);
(1)recv先等待s的发送缓冲中的数据被协议传送完毕,如果协议在传送s的发送缓冲中的数据时出现网络错误,那么recv函数返回SOCKET_ERROR;
(2)如果s的发送缓冲中没有数据或者数据被协议成功发送完毕后,recv先检查套接字s的接收缓冲区,如果s接收缓冲区中没有数据或者协议正在接收数据,那么recv就一直等待,直到协议把数据接收完毕。当协议把数据接收完毕,recv函数就把s的接收缓冲中的数据copy到buf中(注意协议接收到的数据可能大于buf的长度,所以在这种情况下要调用几次recv函数才能把s的接收缓冲中的数据copy完。recv函数仅仅是copy数据,真正的接收数据是协议来完成的);
recv函数返回其实际copy的字节数。如果recv在copy时出错,那么它返回SOCKET_ERROR;如果recv函数在等待协议接收数据时网络中断了,那么它返回0。
注意:在Unix系统下,如果recv函数在等待协议接收数据时网络断开了,那么调用recv的进程会接收到一个SIGPIPE信号,进程对该信号的默认处理是进程终止。
  recvfrom函数(经socket接收数据):
函数原型:int recvfrom(SOCKET s,void *buf,int len,unsigned int flags, struct sockaddr *from,int *fromlen);
相关函数 recv,recvmsg,send,sendto,socket
函数说明:recv()用来接收远程主机经指定的socket传来的数据,并把数据传到由参数buf指向的内存空间,参数len为可接收数据的最大长度.参数flags一般设0,其他数值定义参考recv().参数from用来指定欲传送的网络地址,结构sockaddr请参考bind()函数.参数fromlen为sockaddr的结构长度.


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Linux系统调用-- recv/recvfrom 函数详解

Linux系统调用-- recv/recvfrom 函数详解   功能描述: 从套接字上接收一个消息。对于recvfrom ,可同时应用于面向连接的和无连接的套接字。recv一般只用在面向连...

Udp同一个socket接收与发送实现

1、一个socket实现udp收发socket用于udp通信时,是不区分Server与Client的。因为是无连接的,发送完了也就完了。同样接收到数据也就完成了一次通信。因此,Server端与Clie...

Linux Socket 相关函数作用及参数详细分析

1、socket()函数 int socket(int domain, int type, int protocol); 参见/usr/include/bits/socket.h ...

TCP通信常用的send,sendto,recv,recvfrom函数详解

send函数 int send( SOCKET s,    const char FAR *buf,    int len,    int flags );  不论是客户还是服务器应用程序都用send...

Linux makefile 教程 非常详细,且易懂

最近在学习Linux下的C编程,买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊,可能是我的理解能不行。            于是google到了以下这篇文章。通...

TCP之深入浅出send和recv

本篇我们用一个测试机上的阻塞socket实例来说明主题。文章中所有图都是在测试系统上现截取的。 需要理解的3个概念 1. TCP socket的buffer 每个TCP socket...

linux c学习笔记----UDP基础客户/服务编程(sendto,recvfrom)

sendto(经socket传送数据) 相关函数 send , sendmsg,recv , recvfrom , socket 表头文件 #include #incl...

Linux系统调用-- recv/recvfrom/recvmsg函数详解

转自:http://club.cn.yahoo.com/bbs/threadview/1200062866_65__pn.html  功能描述:  从套接字上接收一个消息。对于...

【Linux C代码分享二】UDP Socket示例程序:使用fgets函数获取屏幕输入

前一篇文章的UDP Socket示例程序的Client是循环发送固定的一句话,有时候我们希望像聊天软件一样可以自己输入数据。读取屏幕字符串可以使用gets函数和fgets函数,然而因为安全方面的因素,...

Linux C函数库参数手册(PDF)

  • 2013-11-20 10:01
  • 4.76MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)