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

📄 jcq_server.cpp

📁 即时通信程序(类似于QQ,MSN) 用C写的
💻 CPP
字号:
#include "../network/network.h"
#include "annuaire.h"

int
main(int argc, char *argv[])
{
 annuaire *annuaire_jcq;
 annuaire_jcq = new annuaire("default");
 network *net;
 net = new network(3210);
 net->set_debug(1);
 net->demarre_serveur();
 while (1)
 {
  if (net->remove_id != -1)
  {
    annuaire_jcq->remove(net->remove_id);
    net->broadcast_msg("LISTE_CLIENTS",annuaire_jcq->get_clients_list());
    net->remove_id = -1;
    net->update_output();
  }
  //_sleep(50);
  net->update_input();

  struct _paquet* paquets = net->get_paquets();
  struct _paquet* tmp = paquets;
  while (tmp)
  {
    if (!strcmp(tmp->tag, "LOGIN"))
    {
     annuaire_jcq->ajout_annuaire(tmp->valeur, net->get_ip(tmp->destinataire), tmp->destinataire);
     net->broadcast_msg("LISTE_CLIENTS",annuaire_jcq->get_clients_list());
    }
    else if (!strcmp(tmp->tag,"MSG"))
    {
     //Parsing du message
     int i=0;
     while ((tmp->valeur[i] != '#')&&(i < strlen(tmp->valeur)))
      i++;
     char dest[255];
     char msg[255];
     strncpy(dest, tmp->valeur, i);
     dest[i] = '\0';
     for (int j=i+1; j < strlen(tmp->valeur); j++)
       msg[j-(i+1)] = tmp->valeur[j];
     msg[strlen(tmp->valeur)-i-1] = '\0';

     //formattage du msg
     char msg_envoi[255];
     sprintf(msg_envoi, "%s#%s", annuaire_jcq->get_nick(tmp->destinataire),msg);

     //recherche de dest dans l'annuaire
     int sk = annuaire_jcq->get_sock(dest);

     if (sk == -1)
         net->envoi(tmp->destinataire,"ERR","Utilisateur inconnu !");
     else
         net->envoi(sk, "MSG",msg_envoi);
    }

    struct _paquet* tmp2 = tmp;
    tmp = tmp->next;
    free(tmp2);
    net->update_output();
  }
  
 }
}

⌨️ 快捷键说明

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