⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 users.c

📁 飞鸽传书协议的linux实现,使用多线程实现的
💻 C
字号:
/********************************************************** *Filename: utils.c *Author:   ������ *Date:     2009-5-21 * *�û��Ĵ��� *********************************************************/#include "users.h"user userList;int insertUser(user *uList, user *target){  user *pre, *cur;  int compName, compHost, compAddr;  if ((uList==NULL)||(target==NULL))    return -1;  if (target->peer.sin_addr.s_addr == htonl(INADDR_ANY))    return -1;    pre = uList;  cur = uList->next;    while (cur!=NULL)  {    compName=strncmp(cur->name, target->name, sizeof(cur->name));    compHost=strncmp(cur->host, target->host, sizeof(cur->host));    compAddr=memcmp(&cur->peer, &target->peer, sizeof(cur->peer));        if (compName>0)      break;        if ((compName==0) && (compHost==0) && (compAddr==0))    {      if (cur->exit == 1)        cur->exit = 0;      return -1;    }    pre = cur;    cur = cur->next;  }    target->next = pre->next;  pre->next = target;  return 0;}void destroyUsers(user *uList){  user *cur;  if (uList==NULL)    return;  while ((cur=uList->next)!=NULL)  {    uList->next = cur->next;    free(cur);  }}int listUsers(user **pusers, user *uList, int size, int flag) //flag==1ʱ������г������û�{  user *cur;  int order=0, tmp;  const char name[]="Name";  const char host[]="HostName";  const char ip[]="Ip";  if ((pusers==NULL)&&(flag==0))    return 0;    if (flag==0)    bzero(pusers, sizeof(user*)*size);  printf("\n\n**********************************************\n");  printf("   %-10s%-20s%-15s\n", name, host, ip);  cur = uList->next;  while ((cur!=NULL)&&(size>1)) //���һ�����ã����������жϽ���  {    if (cur->exit == 0)    {      printf("%-3d%-10s%-20s%-15s\n",             ++order, cur->name, cur->host, inet_ntoa(cur->peer.sin_addr));//      if (flag==0)      {        cur->inUse = 1;        *pusers++ = cur;        size--;      }    }    cur = cur->next;  }    printf("**********************************************\n\n");    if (order==0)    printf("\nNo other users found.\nPlease refresh(rf) or list(ls) later.\n\n");  return order;  }int unListUsers(user **pusers, int num){  user *cur;  int tmp=0;  if (pusers == NULL)    return -1;    while (num-->0)  {    cur = *pusers++;    if (cur!=NULL)    {      cur->inUse = 0;      tmp++;    }  }  return tmp;}/*user* findUser(user *uList, int index){  user *cur=uList;    while((index>0) && (cur!=NULL))  {    index--;    cur = cur->next;  }  return cur;}*/int delUser(user *uList, command *peercom){  user *cur;  int compName, compHost, compAddr;  if (uList==NULL)    return -1;  cur = uList->next;  while (cur!=NULL)  {    compName=strncmp(cur->name, peercom->senderName, sizeof(cur->name));    compHost=strncmp(cur->host, peercom->senderHost, sizeof(cur->host));    compAddr=memcmp(&cur->peer, &peercom->peer, sizeof(cur->peer));        if (compName>0)      return -1;    if ((compName==0) && (compHost==0) && (compAddr==0))    {      cur->exit = 1;      break;    }    cur = cur->next;  }    return 0;  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -