日期:2014-05-16  浏览次数:20714 次

写了一个linux下即使聊天程序,聊天部分出现一个问题
刚学linux编程不久,就急着上手写点东西,现在写到对话部分,群聊是没问题,就私聊遇到问题,这里将输入的首字母作为区分,‘#’为群聊,‘$’为私聊,以下是服务端和客户端部分代码,
 int  speakall(LinkList L,char buf[],int size)//群聊函数。链表节点为存储用户的信息结构体
 {
    
     LinkList p;
     int socket;
     if(!L)
         return -1;
     p=L->next;
     while(p!=NULL)
     {
       if(p->user.state==1)
        {
            socket=p->user.mysockfd;
            sendto_client(&socket,buf,size);
        }
         p=p->next;
     }
 }
 int chat_server(int *socket,char name[])
 {
    int i;
    int len;
    int running=1,recvsize;
    
    char filepath[60];
    int filesocket;
    
    struct tm *pt;
    time_t t;
    char option;
    char buf1[MAX_RECVSIZE];
    char buf2[MAX_TEXTSIZE];
    char id[10];
    int destsocket;
 
   memset(buf2,0,MAX_TEXTSIZE);
    sprintf(buf2,"%s 上线 !\n",name);
    speakall(L,buf2,strlen(buf2));
 
   while(1)
       {
             memset(id,0,10);
             memset(buf1,0,MAX_RECVSIZE);
             memset(buf2,0,MAX_TEXTSIZE);
             memset(filepath,0,60);
 
            if((recvsize=recv(*socket,buf1,MAX_RECVSIZE,0))<=0)
                {
                    perror("recv";
                    printf("用户 %s 掉线 \n",name);