为什么提到反馈send客户端数据,是因为本章博客,目前为止都是单线程的。我们一个服务端只能接收第一个连接进行的客户端发送的数据,在这个客户端断开连接之前,我们的服务端都无法接收其他客户端发过来的数据了。
所以我们提出多线程的思想使得,一个服务端可以对应多个客户端,来完成我们的数据接收与反馈,而这之前,必须先讲一下send。
如下代码:
for (;;)
{
int recvlen = recv(client, buffer, sizeof(buffer) - 1, 0); //第四个参数这个0是flag和系统相关,有很多自定一的操作,我们这边0就是不对他设置
if (recvlen <= 0)
break;
buffer[recvlen] = '\0';
if (strstr(buffer, "quit") != NULL)
{
char re[] = "quit success!\n";
send(client, re,strlen(re)+1, 0);
break;
}
int sendlen = send(client, "ok\n", 4, 0); //参数分析,第三个参数设置三个字节,第四个参数flag和操作系统有关,这里先写为0
printf("recv %s\n", buffer);
}
closesocket(client);
结果演示:
服务端: