亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? chat.cpp

?? 《unix網絡編程技術與分析》一書的C源程序
?? CPP
字號:
/* File : chat.cpp  */
#include <stdio.h>
#include <string.h>
#include <vector.h>
#include "pthread.h"

#include "Mysocket.h"
#include "MyThread.h"
#include "MySync.h"
#include "TcpServThr.h"

#include "Chat.h"

MessageQue::MessageQue(int len)
{
   lastSN = 1;
   queLen = len; 
   queue = new vector<Message*>;
   lock = new MyMutex;
}

MessageQue::~MessageQue()
{
   /* delete all messages */
   vector<Message*>::iterator it = queue->begin();
   while (it != queue->end()) {
      Message* m = (Message*)*it;
      delete m->message;
      delete m;
      it++;
      }
   delete queue;
   delete lock;
}

int MessageQue::Add(int conn, char* m)
{
   if (m == NULL) return -1;
   
   Message *mes;
   mes = new Message; 
   mes->connection = conn;
   mes->message = new char[strlen(m)];
   strcpy(mes->message,(const  char *) m);
   lock->Lock();
   mes->sn = lastSN;
   lastSN++;
   if (queue->size() == queLen) {
      vector<Message*>::iterator it = queue->begin();
      queue->erase(it);
      }
   queue->push_back(mes);
   lock->Unlock();
   return 0;
}

int MessageQue::Get(int conn, long* maxsn, char* m)
{
   int err;
   err = 1;
   lock->Lock();
   vector<Message*>::iterator it = queue->begin();
   while (it != queue->end()) {
      Message* mes = (Message*) *it;
      if ((mes->sn > *maxsn)&&(mes->connection != conn)) {
         strcpy(m,mes->message);
         *maxsn = mes->sn;
         m = m + strlen(mes->message) - 1;
         err = 0;
         }
      it++;
      }
   lock->Unlock();
   return  err;
}   

ChatServer::ChatServer()
{
    SetMaxConn(MAXCONN);
    max_usrs = MAX_USRS;
    msg = new MessageQue(QUE_LEN);
    con = new MyCondition;
}

ChatServer::ChatServer(int port, char *hostname): 
   TcpServThr(port,hostname)
{
   SetMaxConn(MAXCONN);
   max_usrs = MAX_USRS;
   msg = new MessageQue(QUE_LEN);
   con = new MyCondition;
}


ChatServer::ChatServer(int port, int max_conn, int maxusr, int len, char *hostname): 
   TcpServThr(port, max_conn,hostname)
{
   max_usrs = maxusr;
   queLen = len;
   msg = new MessageQue(queLen);
   con = new MyCondition;
}

ChatServer::~ChatServer()
{
   /* Wait until all threads exits */
   WaitAllThr();     // must execute it before ~TcpServThr
   delete msg;
   delete con;
}

   
void ChatServer::DealRecv(MyThread* thread)
{
   printf("Receiver is running!\n");
   char buf[MAX_PACKET_LEN];
   
   int socket = ((Receiver*) thread)->socket;
   int len = recv(socket,buf,MAX_NAME_LEN,0);
   buf[len - 1] = ':';
   buf[len] = '\0';
   printf("%s %d\n",buf,len);

   while (1) {
      int len1 = recv(socket,buf + len,MAX_PACKET_LEN,0);
      if (len1 < 1) break;
      buf[len1 + len] = '\0';
      printf("Recv:%s",buf);
      msg->Add(socket, buf);
      con->wakeAll();
      }
   DelThread(thread);
   
}

void ChatServer::DealSend(MyThread* thread)
{
   char buf[MAX_PACKET_LEN];
   long  maxsn;
   
   maxsn = msg->GetSN() - 1;
   int socket = ((Receiver*) thread)->socket;
   printf("Sender is running!\n");
   while(1) {
      con->wait();
      int err = msg->Get(socket,&maxsn,buf);
      if (err) continue;
      printf("Send:%s",buf);
      Send(socket,buf,strlen(buf),0);
      }
   DelThread(thread);
}


 
 
   
/************************************************************/



main()
{
   ChatServer  chat(1234);
 //  Server::Sender* s;
 //  s = new Server::Sender(1,NULL);
   chat.Init();
   chat.Run();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久爱另类一区二区小说| 欧美在线高清视频| 在线观看av一区| 精品福利一二区| 一区二区三区日韩欧美精品| 国产一区二区网址| 777xxx欧美| 亚洲一级片在线观看| 高清不卡一区二区| xfplay精品久久| 日韩电影网1区2区| 日本福利一区二区| 国产精品久久久久久久裸模 | 久久久精品国产99久久精品芒果| 亚洲日本中文字幕区| 国产电影一区在线| 精品国精品自拍自在线| 亚洲成人av一区二区三区| 91美女视频网站| 中文字幕免费一区| 国产成人精品一区二区三区网站观看| 欧美日产在线观看| 亚洲国产精品精华液网站| 91同城在线观看| 国产精品福利一区二区三区| 国产成人高清视频| www国产成人| 国产精品一区二区在线观看不卡| 欧美一区二区三区成人| 日本中文在线一区| 日韩一区二区高清| 麻豆91精品视频| 日韩欧美中文字幕一区| 琪琪一区二区三区| 欧美一二三区精品| 老司机精品视频线观看86| 精品三级av在线| 激情另类小说区图片区视频区| 日韩亚洲欧美高清| 久久国产欧美日韩精品| 欧美精品一区二区在线观看| 激情欧美一区二区| 欧美激情一区二区三区| 成人精品视频一区| 亚洲天堂精品在线观看| 91成人免费网站| 亚洲高清不卡在线观看| 欧美剧情片在线观看| 日韩中文字幕一区二区三区| 91精品国产综合久久国产大片| 亚洲成人av一区二区| 欧美一区二区三区视频免费| 久草精品在线观看| 国产精品热久久久久夜色精品三区| 成人中文字幕在线| 亚洲免费毛片网站| 欧美精品免费视频| 国产成人在线观看| 国产精品久久久一本精品| 91天堂素人约啪| 国产一区二区三区黄视频| 日本一区二区三区国色天香| 成人aaaa免费全部观看| 亚洲二区在线观看| 欧美mv和日韩mv的网站| 99精品在线免费| 偷拍与自拍一区| 国产日韩欧美麻豆| 欧美又粗又大又爽| 激情综合一区二区三区| 亚洲视频一区二区免费在线观看| 欧美午夜不卡视频| 国产精品99久久久久久似苏梦涵| 亚洲另类色综合网站| 在线播放一区二区三区| 国产成人av影院| 亚洲国产成人高清精品| 亚洲国产精品高清| 在线成人免费观看| 国产激情一区二区三区四区| 亚洲小说春色综合另类电影| 国产日韩欧美综合一区| 欧美日韩免费观看一区二区三区| 国产精品91xxx| 视频一区在线播放| 亚洲黄色av一区| 欧美激情在线一区二区| 日韩一级片在线观看| 色综合天天视频在线观看| 狠狠色狠狠色综合系列| 亚洲第一电影网| 中文字幕一区二区三区不卡在线| 欧美电视剧在线观看完整版| 91福利在线看| www.久久久久久久久| 九九九精品视频| 欧美aaaaa成人免费观看视频| 亚洲免费成人av| 国产精品美女久久久久aⅴ国产馆| 欧美日韩国产高清一区二区 | 中文字幕二三区不卡| 日韩天堂在线观看| 欧美精品在线观看播放| 欧美日韩中文另类| 日本韩国欧美国产| 色偷偷久久人人79超碰人人澡| 成人免费看黄yyy456| 国产精品中文有码| 国产福利一区在线| 国产资源在线一区| 国产自产高清不卡| 国产乱码一区二区三区| 国产在线日韩欧美| 国产一区二区女| 国产成人精品一区二区三区四区 | 欧美va亚洲va国产综合| 欧美一区二区在线播放| 宅男噜噜噜66一区二区66| 欧美放荡的少妇| 欧美一区二区在线视频| 欧美不卡在线视频| 亚洲精品在线免费播放| 久久久99精品免费观看| 国产精品蜜臀在线观看| 亚洲欧美偷拍三级| 亚洲精品视频在线看| 亚洲一区二区三区中文字幕在线| 亚洲另类一区二区| 午夜影院久久久| 欧美aaaaaa午夜精品| 国产永久精品大片wwwapp | 久久伊99综合婷婷久久伊| 久久影视一区二区| 中文字幕免费不卡| 亚洲人吸女人奶水| 亚洲sss视频在线视频| 免费不卡在线观看| 国产精品99久久久久| 91免费在线看| 在线91免费看| 久久久久高清精品| 亚洲天堂av一区| 天天影视色香欲综合网老头| 美女视频黄频大全不卡视频在线播放| 精品系列免费在线观看| av电影一区二区| 欧美欧美午夜aⅴ在线观看| 日韩欧美中文一区二区| 国产精品网友自拍| 午夜私人影院久久久久| 国产在线精品免费| 色菇凉天天综合网| 日韩欧美不卡一区| 亚洲视频 欧洲视频| 蜜臀久久99精品久久久久久9| 国产.精品.日韩.另类.中文.在线.播放| 色综合网色综合| 精品成人在线观看| 亚洲综合在线第一页| 九色|91porny| 91国产免费看| 国产日韩v精品一区二区| 亚洲成av人**亚洲成av**| 国产福利一区二区三区视频在线| 91搞黄在线观看| 国产目拍亚洲精品99久久精品| 亚洲一二三区在线观看| 高清在线不卡av| 日韩一级片在线观看| 中文字幕一区二区三| 黄色资源网久久资源365| 在线看国产日韩| 国产精品久久久久久久久搜平片 | 亚洲欧美日韩国产另类专区| 青青草国产精品亚洲专区无| 91影院在线观看| 久久亚洲综合色一区二区三区| 亚洲aaa精品| 99国产精品一区| 久久久久久夜精品精品免费| 亚洲成人动漫精品| 日本精品一区二区三区高清| 中文字幕不卡的av| 国产精品综合视频| 日韩美女在线视频 | 午夜av一区二区| 色婷婷精品大视频在线蜜桃视频| 久久蜜桃一区二区| 久久99精品国产麻豆婷婷| 91精品在线观看入口| 亚洲午夜免费电影| 91官网在线免费观看| 亚洲欧美在线视频观看| 成人白浆超碰人人人人| 欧美极品少妇xxxxⅹ高跟鞋 | 91精品国产综合久久精品麻豆 | 亚洲曰韩产成在线| 99精品视频一区| 成人欧美一区二区三区1314| 成人一区二区三区视频在线观看|