实现 TCP 服务器/客户端聊天,我想验证新客户端的用户名是否不存在。服务器的代码部分是:
do
{
err=0;
if(write(socketFd[(int)idx], nickMsg, strlen(nickMsg))<0)
perror("write");
memset(buff, 0, sizeof(buff));
read(socketFd[(int)idx], buff, sizeof(buff));
for(i=0; i<supportedUsrsNum; i++)
{
if(*names[i]!=0)
{
if(strncmp(buff, names[i], strlen(buff))==0)
{
err=-1;
write(socketFd[(int)idx], usrExstMsg, strlen(usrExstMsg));
break;
}
}
}
if(!err)
break;
}
while(err==-1);
客户写道:
do
{
gets(sendBuff);
write(sockFd, &sendBuff, sizeof(sendBuff));
sleep(1);
}while(1);
当第二个客户端尝试现有名称时,服务器检测到它并进行第二次迭代,其中它的 read() 获得 ASCII 值 3,尽管客户端没有进一步的输入。我错过了什么,如何从客户那里重新读取新值?