假设使用Socket基于TCP通信协议进行C/S通信编程,客服端已经成功与服务端建立tcp连接,并且可以正常进行收发数据。
当一段时间后,服务端的程序如果调用closesocket(sClient);WSACleanup();函数关闭socket,
那么客户端的recv()将会返回0;
如果服务端没有调用closesocket(sClient);而只调用WSACleanup();或直接关闭程序,
那么客户端的recv()将会返回-1(SOCKET_ERROR)。
以上结果在局域网经过实际验证。
墨衍会员
·
AI 创作全网分发
墨衍智能分发
本文由作者通过墨衍一键同步至各平台
1分发平台
1w累计阅读
1w+平均单平台
已同步平台
CSDN
微信公众号
微博
知乎
掘金
百家号
博客园
抖音
小红书
你的文章也可以这样分发
墨衍会员 ¥399起/年,写一次发全网
我也要 →
码龄25年
假设使用Socket基于TCP通信协议进行C/S通信编程,客服端已经成功与服务端建立tcp连接,并且可以正常进行收发数据。
当一段时间后,服务端的程序如果调用closesocket(sClient);WSACleanup();函数关闭socket,
那么客户端的recv()将会返回0;
如果服务端没有调用closesocket(sClient);而只调用WSACleanup();或直接关闭程序,
那么客户端的recv()将会返回-1(SOCKET_ERROR)。
以上结果在局域网经过实际验证。
socket编程:recv/send 和 recv/recvfrom返回值及处理
1、recv 和 recvfrom =0 当返回值为0时,表示对端已经关闭了这个链接,我们应该自己关闭这个链接,即close(sockfd)。另外因为异步操作会用select或epoll做事件触发,所以: 1、如果使用select,应该使用FD_CLR(sockfd,fd_set)将sockfd清除掉,不再监听。 2、如果使用epoll,系统会自己将 ...
Linux网络编程:recv的返回值
recv是网络编程中用于TCP传输接收数据的接口,由于工作中一直没有接触到网络编程,虽然知道这个函数,但是没有使用经验,所有对接口细节不是很了解。 直到前阵子在项目中调试第三方的源码时,跟踪到这个函数,才发现它的返回值和我想象的不太一样。 recv函数的原型: ssize_t recv(int sockfd, void* buf, size_t len, int flags); 之前知道的是如果读取成功,会返回实际读取到的字节数,但是如果读取不到数据呢?一直想当然的认为会返回0,其实并不是,当读取不到数据
【C语言】socket编程接收问题
为客户端和服务端实现标准的健康检查API。这些API可以返回简单的状态码或更复杂的健康信息,以便监控服务可以理解被监控服务的状态。
C++编程socket编程用recv函数接收,返回值为0解决方案
先讲下背景,我需要写一个客户端,用winsock发送请求到服务器,服务器用tomcat写的,通过responseBody返回字符串作为发还给客户端的数据。 错误表现为: 在用Visual Studio2017调试的时候,在Debug模式下,是没有任何问题的,而在Release模式下,则报错。 错误代码如下: char buffer[...
recv函数返回值处理(包括errno的处理)
1、recev()函数的返回值: >0:接收到的数据大小; =0:连接关闭; <0:出错。 在出错的情况下, 这三种错误下认为连接是正常的,继续接收 if(errno == EINTR ||(errno == EAGAIN)||errno == EWOULDBLOCK) continue; if(FD_ISSET(connfd,......
【Socket网络编程】17. recv() 函数详解
recv函数 int recv( SOCKET s, char *buf, int len, int flags); 参数说明 第一个参数指定接收端套接字描述符; 第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据; 第三个参数指明buf的长度;第四个参数一般置0。 同步Socket的recv函数的执行流程 当应用程序调用recv函数时: recv先等待 SOCKE...
recv( )函数返回值说明
recv函数 int recv( SOCKET s, char FAR *buf, int len, int flags); 参数说明 第一个参数指定接收端套接字描述符; 第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据; 第三个参数指明buf的长度; 第四个参数一般置0。 同步Socket的recv函数的执行流程 当应用程序调用recv函数时: rec...
深入理解socket中的recv函数和send函数
一、函数原型 **·**recv函数用于socket通信中接收消息,接口定义如下: ssize_t recv(int socket, void *buf, size_t len, int flags) 参数一:指定接收端套接字描述符; 参数二:指向一个缓冲区,该缓冲区用来存放recv函数接收到的数据; 参数三:指明buf的长度; 参数四:一般置为0; 返回值:失败时,返回值小于0;超时或对端主动关闭,返回值等于0;成功时,返回值是返回接收数据的长度。 **·**send函数用于socket通信中发送消息,
盘点python socket 中recv函数的坑
1. 首先来看一下recv函数的各个参数 函数原型:int recv( SOCKET s, char *buf, int len, int flags) 功能:不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。 参数一:指定接收端套接字描述符; 参数二:指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据; 参数三:指明buf的长度; 参数四 :一般置为0...
socket编程 recv()返回值处理
转自https://blog.csdn.net/flying881114/article/details/4850666 一般在经典的socket教程中,调用send()和recv()时都会判断一下返回值,如果返回值是-1(或者SOCKET_ERROR),那么就进行错误处理(一般是打印出错信息,关闭socket,退出)。在我的一个项目中我因为嫌麻烦就想当然没有判断send和recv的返回值,结果遇...
socket编程:recv()函数详解
文章目录1. 函数原型2. 函数使用3. 参数详解4. 返回值 官方文档:https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-recv 1. 函数原型 recv函数从连接的套接字或绑定的无连接套接字接收数据。 int WSAAPI recv( SOCKET s,//标识已连接套接字的描述符。 char *buf,//指向缓冲区的指针,以接收传入的数据。 int len,//buf参数指向的缓冲区
Socket中send()函数和recv()函数详解
目录1、send函数2、recv函数关于socket的send和recv的超时设置 1、send函数 int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。 客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。 (1)第一个参数指定发送端套接字描述符; (2)第二个参数指明一个存放应用程序要发送数据的缓冲区; (3)第三
socket recv()函数返回0的一种情况
假设使用Socket基于TCP通信协议进行C/S通信编程,客服端已经成功与服务端建立tcp连接,并且可以正常进行收发数据。 当一段时间后,服务端的程序如果调用closesocket(sClient);WSACleanup();函数关闭socket, 那么客户端的recv()将会返回0; 如果服务端没有调用closesocket(sClient);而只调用WSACleanup()
recv函数返回值总结
函数原型:int recv( SOCKET s, char *buf, int len, int flags) 功能:不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。 参数一:指定接收端套接字描述符; 参数二:指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据; 参数三:指明buf的长度; 参数四 :一般置为0。
【Socket网络编程】recv()与send()的返回值
1、intrecv(SOCKETs, char *buf, intlen, intflags); 0、recv会先等待套接字s的发送缓冲中的数据被协议传送完毕,如果协议在传送s的发送缓冲中的数据时出现网络错误,那么recv函数返回SOCKET_ERROR(= -1); 如果s的发送缓冲区中没有数据或者数据被协议成功发送完毕后,recv再检查套接字s的接收缓冲区,如果s接收缓冲...
send()和recv()函数详解(send返回值举例)
转载:send()和recv()函数详解_weixin_34281537的博客-CSDN博客 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。 该函数的参数:这里只描述同步Socket的send函数的执行流程。当调用该函数时:(1) send先比较待发送数据的长度len和套接字s的发送缓冲区的长度,如果len大于s的发送缓冲区的长度,该函数返回 SOCKET_ERROR;(2) 如果
socket编程中的recv函数和send函数
1、recv()函数 recv()函数用于socket通信中接收消息 #include <sys/types.h> #include<sys/socket.h> ssize_t recv(int sockfd, void *buff,size_t nbytes,int flags); sockfd:文件描述符; buff:指向一个缓冲区,用来存放接收的数据 ...
Windows网络编程之recv()函数
一、作用与原理 得到指定客户端(参数1)发来的消息 原理(本质):复制,数据的接收都是由协议本身做的,也就是socket的底层做的,系统会有一段缓冲区,存储着接收到的数据。外面调用recv的作用,就是通过socket找到这个缓冲区,并把数据复制进参数2,复制参数3个 二、句法 int recv( SOCKET s, char *buf, int len, int f...
linux socket send函数和recv函数详解以及修改缓冲区大小
一、send/recv详解 1.send 函数 int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。 该函数的第一个参数指定发送端套接字描述符; 第二个参数指明一个存放应用程序要发送数据的缓冲区; 第三个参数指明实际要发送的数据的字节数; 第四个参数一般置0。
1万+
1万+
5440
7761

被折叠的 条评论
为什么被折叠?



