首页 » 网站建设 » phpsocketrecv超时技巧_socket编程运用recv函数和send函数

phpsocketrecv超时技巧_socket编程运用recv函数和send函数

访客 2024-12-08 0

扫一扫用手机浏览

文章目录 [+]

int recv(SOCKET s, char buf, int buflen, int flags);

参数1:指定吸收端套接字描述符

phpsocketrecv超时技巧_socket编程运用recv函数和send函数

参数2:指向一个缓冲区,该缓冲区用来存放recv函数吸收到的数据

phpsocketrecv超时技巧_socket编程运用recv函数和send函数
(图片来自网络侵删)

参数3:指明buf的长度

参数4:一样平常设置为0

返回值:失落败时,返回值小于0,超时或对端主动关闭 返回值即是0,成功时返回值是返回吸收数据的长度。

send函数用于socket通信中发送,接口定义如下:

int send(SOCKET s, const char buf, int len, int flags)

参数1:指定发送端套接字描述符

参数2:指明一个存放运用程序要发送数据的缓冲区

参数3:指明实际要发送的数据的字节数

参数4:一样平常设置为0

返回值:失落败时,返回值小于0,超时或对端主动关闭返回值即是0,成功时返回发送数据的长度

一样平常通信的报文格式:报文头+报文体 针对这种格式的报文怎么处理最得当?

巧用while + recv

1.先吸收报文头,直到吸收报文的长度和定义的报文头长度相同

2.吸收报文体,直到收到的报文长度和报文体长度相同

int nAlready = 0;int nHeadLen = HEAD_LEN;char buf[HEAD_LEN] = {0x0};while(nAlready < nHeadLen){int nResult = recv(s, buf + nAlready, nHeadLen - nAlready, 0);if (nResult <= 0){ //}nAlready += nResult;}

报文头的吸收办法和报文的吸收办法相同。

巧用 while + send

和while + recv类似 不同的是发送的时候不区分报文头和报文体

while(nAlready < pkgLen){nResult = send(s, buf + nAlready, pkgLen - nAlready, 0);if (nResult <= 0){//}nAlready += nResult;}

相关文章

vim支撑php技巧_谁说 Vim 不好用

责编 | 郭芮相信大家在利用各种各样强大的 IDE 写代码时都会把稳到,代码中各种类型的关键字会用独特的颜色标记出来,然后形成一套...

网站建设 2024-12-10 阅读0 评论0