聊天室加入用户名查重功能

 case '0'://判断是否重名
                ptemp = phead;
                while(ptemp->next!=NULL){
                    ptemp = ptemp->next;
                    if(!strcmp(ptemp->cli.cli_name,data_cli.cli_name)){
                        memset(data_cli.send_text,0,N);
                        snprintf(data_cli.send_text,N,"用户名[%s]已被占用,请您换一个用户名登录!",data_cli.cli_name);
                        if(-1==sendto(sockfd,&data_cli,sizeof(data_cli),0,(struct sockaddr *)&clientaddr,clientaddr_len)){
                            ERRLOG("名字检验信号发送失败");
                        }
                        break;
                    }
                }
                if(ptemp->next==NULL&&strcmp(ptemp->cli.cli_name,data_cli.cli_name)){
                    memset(data_cli.send_text,0,N);
                    strcpy(data_cli.send_text,"登录成功,欢迎使用!\0");
                    data_cli.operate='1';
                    if(-1==sendto(sockfd,&data_cli,sizeof(data_cli),0,(struct sockaddr *)&clientaddr,clientaddr_len)){
                        ERRLOG("名字检验信号发送失败");
                    }
                }
                break;
 puts("--------欢迎登录Future聊天室--------");
    //填充本人数据
    data data_cli;
  loop:
    printf("请输入您登录的名字:\n");
    fgets(data_cli.cli_name,sizeof(data_cli.cli_name),stdin);
    data_cli.cli_name[strlen(data_cli.cli_name)-1]='\0';
    data_cli.operate='0';
    //发送检验登录名信息
    if(-1==sendto(sockfd,&data_cli ,sizeof(data_cli),0,(struct sockaddr *)&serveraddr,serveraddr_len)){
        ERRLOG("登录检验信号发送失败");
    }
    if(-1==recvfrom(sockfd,&data_cli ,sizeof(data_cli),0,(struct sockaddr *)&serveraddr,&serveraddr_len)){
        ERRLOG("接收检验信息失败");
    }
    if(data_cli.operate=='0'){
        printf("%s\n",data_cli.send_text);
        goto loop;
    }else if(data_cli.operate=='1'){
        printf("%s\n",data_cli.send_text);
    }
    //发送登录信息
    if(-1==sendto(sockfd,&data_cli ,sizeof(data_cli),0,(struct sockaddr *)&serveraddr,serveraddr_len)){
        ERRLOG("登录信号发送失败");
    }

 PS:要将姓名等信息也插入到客户端信息结构体中,遍历比对链表中的姓名

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值