c++ socket 粘包 拆包 代码
时间: 2023-07-31 17:05:04 浏览: 129
socket通信中粘包和拆包是经常遇到的问题,下面是一个简单的c++ socket粘包和拆包的代码示例:
```c++
// 粘包和拆包示例代码
int recvPack(SOCKET sock, char* buf, int len)
{
int nleft = len;
char* pbuf = buf;
int nread = 0;
while (nleft > 0)
{
nread = recv(sock, pbuf, nleft, 0);
if (nread <= 0)
break;
nleft -= nread;
pbuf += nread;
}
return (len - nleft);
}
int sendPack(SOCKET sock, const char* buf, int len)
{
int nleft = len;
const char* pbuf = buf;
int nwrite = 0;
while (nleft > 0)
{
nwrite = send(sock, pbuf, nleft, 0);
if (nwrite <= 0)
break;
nleft -= nwrite;
pbuf += nwrite;
}
return (len - nleft);
}
```
recvPack函数用于接收指定长度的数据包,sendPack函数用于发送指定长度的数据包。在实际应用中,可以根据自己的需求对这些函数进行改进,比如增加粘包时的处理逻辑等。
阅读全文