首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

recv、recvfrom

(这里是windows的头文件,Linux的用法在下面的那个实例) 头文件:#include #include int recvfrom...2、recv() 头文件:#include #include 定义函数:int recv(int s, void *buf,...int len, unsigned int flags); 函数说明:recv()用来接收远端主机经指定的socket 传来的数据, 并把数据存到由参数buf 指向的内存空间, 参数len...其他数值定义如下: 1、MSG_OOB 接收以out-of-band 送出的数据. 2、MSG_PEEK 返回来的数据并不会在系统内删除, 如果再调用recv()会返回相同的数据内容....len 大小的数据后才能返回, 除非有错误或信号产生. 4、MSG_NOSIGNAL 此操作不愿被SIGPIPE 信号中断返回值成功则返回接收到的字符数, 失败返回-1,错误原因存于errno .

1.7K40

recv&send函数

一、recv函数 int recv( SOCKET s, char *buf, int len, int flags); 函数功能:不论客户端还是服务端都能通过recv从TCP另一端接收数据。...的recv函数的执行流程:当应用程序调用recv函数时,recv先等待s的发送缓冲的数据被协议传送完毕,(发送先) 如果协议在传送s的发送缓冲的数据时出现网络错误,那么recv函数返回SOCKET_ERROR...; 如果s的发送缓冲没有数据或者数据被协议成功发送完毕后,recv先检查套接字s的接收缓冲区,如果s接收缓冲区没有数据或者协议正在接收数据,那么recv就一直等待,直到协议把数据接收完毕; 当协议把数据接收完毕...,recv函数就把s的接收缓冲的数据copy到buf(注意协议接收到的数据可能大于buf的长度,所以在这种情况下要调用几次recv函数才能把s的接收缓冲的数据copy完。...recv函数仅仅是copy数据,真正的接收数据是协议来完成的),recv函数返回其实际copy的字节数; 如果recv在copy时出错,那么它返回SOCKET_ERROR;如果recv函数在等待协议接收数据时网络中断了

1.1K20

send,recv,sendto,recvfrom

s的发送缓冲的数据发送完,假设len小于剩余 空间大小send就只把buf的数据copy到剩余空间里(注意并非send把s的发送缓冲的数据传到连接的还有一端的,而是协议传的,send不过把buf的数据...当应用程序调用recv函数时,recv先等待s的发送缓冲 的数据被协议传送完成,假设协议在传送s的发送缓冲的数据时出现网络错误,那么recv函数返回SOCKET_ERROR,假设s的发送缓冲没有数...据或者数据被协议成功发送完成后,recv先检查套接字s的接收缓冲区,假设s接收缓冲区没有数据或者协议正在接收数据,那么recv就一直等待,仅仅到 协议把数据接收完成。...当协议把数据接收完成,recv函数就把s的接收缓冲的数据copy到buf(注意协议接收到的数据可能大于buf的长度,所以 在这样的情况下要调用几次recv函数才干把s的接收缓冲的数据copy完。...recv函数仅仅是copy数据,真正的接收数据是协议来完成的),recv函数返回事实上际copy的字节数。

1.4K10

Linux下Socket网络编程send和recv使用注意事项

2.recv函数 ssize_t recv(int s, char *buf, size_t len, int flags); (1)recv先等待s的发送缓冲的数据被协议传送完毕,如果协议在传送s的发送缓冲...的数据时出现网络错误,那么recv函数返回SOCKET_ERROR。...(2)如果s的发送缓冲没有数据或者数据被协议成功发送完毕后,recv先检查套接字s的接收缓冲区,如果s接收缓冲区没有数据或者协议正在接收数 据,那么recv就一直等待,直到协议把数据接收完毕。...当协议把数据接收完毕,recv函数就把s的接收缓冲的数据copy到buf。...(注意:协议接收到的数据可能大于buf的长度,所以 在这种情况下要调用几次recv函数才能把s的接收缓冲的数据copy完。

2.9K31

recv函数说明返回值

是否要在 recv之前,判定连接是否中断,如果未中断则recv.  恩。我最后查了一下,是因为服务端关闭了套接字,才导致这边recv返回0。...当应用程序调用recv函数时, (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的字节数。

4.7K10

TCP之深入浅出send&recv

接触过网络开发的人,大抵都知道,上层应用使用send函数发送数据,使用recv来接收数据,而send和recv的实现原理又是怎样的呢? 在前面的几篇文章,我们有提过,TCP是个可靠的、全双工协议。...在本文中,我们首先会简单介绍下TCP中发送缓冲区和接收缓冲区的作用(对于后面理解send和recv非常重要),然后讲解Linux系统下,TCP发送和接收数据是如何实现的。...在Linux内核,有两种方式可以查看tcp缓冲区buffer大小。...当协议把数据接收完毕,recv函数就把sockft的接收缓冲的数据copy到bufrecv函数返回其实际copy的字节数。...https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/ipv4/tcp.c#n1581 END 高性能架构探索

4.2K72

send()、sendto()和recv()、recvfrom()的使用

本文收录于微信公众号「 LinuxOK 」,ID为:Linux_ok,关注公众号第一时间获取更多技术学习文章。...udp通讯的sendto()需要在参数里指定接收方的地址/端口,recvfrom()则在参数存放接收发送方的地址/端口,与之对应的send()和recv()则不需要如此,但是在调用send()之前,...需要为套接字指定接收方的地址/端口(这样该函数才知道要把数据发往哪里),在调用recv()之前,可以为套接字指定发送方的地址/端口,这样该函数就只接收指定的发送方的数据,当然若不指定也可,该函数就可以接收任意的地址的数据...(这些内容前面文章udp通讯的connect()和bind()函数 有详细讲过) 这4个函数的使用比较简单,但在一个实例,遇到一个小问题。...实现功能: udp服务器创建一个套接字接收客户端的连接,连接成功后,服务器再创建一个套接字与客户端进行数据交互,要求尽量使用connect()和recv()、send()函数。

1.4K20

网络数据传输,recv && send?没那么简单!

) 2.如果len小于或者等于s的发送缓冲区的长度,那么send先检查协议是否正在发送s的发送缓冲的数据,如果是就等待协议把数据发送完,如果协议还没有开始发送s的发送缓冲的数据或者s的发送缓冲没有数据...的recv函数的执行流程:当应用程序调用recv函数时,recv先等待s的发送缓冲的数据被协议传送完毕,(发送先) 如果协议在传送s的发送缓冲的数据时出现网络错误,那么recv函数返回SOCKET_ERROR...; 如果s的发送缓冲没有数据或者数据被协议成功发送完毕后,recv先检查套接字s的接收缓冲区,如果s接收缓冲区没有数据或者协议正在接收数据,那么recv就一直等待,直到协议把数据接收完毕; 当协议把数据接收完毕...,recv函数就把s的接收缓冲的数据copy到buf(注意协议接收到的数据可能大于buf的长度,所以在这种情况下要调用几次recv函数才能把s的接收缓冲的数据copy完。...char buffer[128]; buffer[128] = '\0'; 通过 recv 读取的字符数为 128 时,就会是文稿的结果。

65430
领券