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

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

?? server.c

?? 這是linux下
?? C
字號:
#ifdef HAVE_CONFIG_H#include <config.h>#endif#include <pthread.h>#include "server.h"#include "link.h"typedef struct threadargs{  int sock;  LList *list;}threadargs;int getuser(char *buf,char *username,LList *userlist);char iscmd(const char * message);int useratlist(LList *userlist,char *username);int findclientsock(LList *userlist,char *username);char *getsecond(char *message);char *getthird(char *message);void domessage(char *dest,char * userfrom,char *message);void accept_cli(threadargs *newargs);int main(int argc, char *argv[]){  int sctcp;  char hostname[80] = "";  struct sockaddr_in SC_link = { 0 };  int server_port=8000;  int childPid=0;  static LList userlist;  InitList(&userlist);  pthread_t id;  int ret;  printf("Server is starting\n");  sctcp=tcpSocket();	//client-server comunicate with tcp  Setsockopt(sctcp);		//set SO_REUSEADDR,SO_LINGER opt  GetHostName(hostname, sizeof(hostname));  CreateSockAddr(hostname,&SC_link,server_port);  Bind(sctcp, (struct sockaddr *) &SC_link,sizeof(SC_link));  Listen(sctcp);  printf("Server started successfully and it is ready now\n");  printf("Now entered listening mode\n");  for (;;)  {    struct sockaddr_in client_sockaddr = { 0 };    int cli_socket, cli_sock2,clientLength = sizeof(client_sockaddr);    (void) memset(&client_sockaddr, 0, sizeof(client_sockaddr));    cli_socket = Accept(sctcp,(struct sockaddr *) &client_sockaddr, &clientLength);    if (-1 == cli_socket)    {      perror("accept()");    }    threadargs newargs;    newargs.sock=cli_socket;    newargs.list=&userlist;    //      accept_cli(&newargs);    ret=pthread_create(&id,NULL,(void *)accept_cli,&newargs);    if(ret!=0)      perror("thread create error");  }  return EXIT_SUCCESS;}void accept_cli(threadargs *newargs){  LList *userlist=newargs->list;  int cli_socket=newargs->sock;  int cli_sock2;  int recvn;	//num of recv bytes  char buf[bufsize+1]="";  char buf2[bufsize+1]="";  char cmd;  client newcli;  client lastuser;	//the user which client talk to last time  bzero(&newcli,sizeof(client));  bzero(&lastuser,sizeof(client));  if(-1==Recv(cli_socket,buf))    pthread_exit(NULL);  printf("%s",buf);  if(-1==Send(cli_socket,"Server OCP v0.0.1\n"))    pthread_exit(NULL);  bzero(buf,bufsize);  if(-1==Recv(cli_socket,buf))    pthread_exit(NULL);  Rtrim(buf);  while(useratlist(userlist,buf)==0) //username has been used  {    if(-1==Send(cli_socket,":x"))      pthread_exit(NULL);    bzero(buf,bufsize);    if(-1==Recv(cli_socket,buf))      pthread_exit(NULL);    Rtrim(buf);  }  Send (cli_socket,"Longin Successfully\n");  strncpy(newcli.nick,buf,strlen(buf));  newcli.sock=cli_socket;  ListInsert(userlist,newcli);  while(1)  {    LNode *node=userlist->head->next; //use in :a    bzero(buf,bufsize);    if(Recv(cli_socket,buf)==-1)	//client offline    {      ListDelete(userlist,cli_socket);      pthread_exit(NULL);    }    if((cmd=iscmd(buf))==0)	//if message body contains only message(not have a command)    {      if(useratlist(userlist,lastuser.nick)==0)      {        cli_sock2=lastuser.sock;        domessage(buf2,newcli.nick,buf);        if(-1==Send(cli_sock2,buf2))          pthread_exit(NULL);      }      else      {        if(-1==Send(cli_socket,"The user you want to talk isn't online\n"))          pthread_exit(NULL);      }      continue;    }    switch(cmd)    {    case 'l':      bzero(buf,bufsize);      LNode *user=userlist->head->next;      while(user!=NULL)      {        strcat(buf,user->e.nick);        strcat(buf,"\n");        user=user->next;      }      if(-1==Send(cli_socket,buf))        pthread_exit(NULL);      break;    case 'u':	//client change user which will talk to      if(getuser(buf,lastuser.nick,userlist)!=-1)	//buf client's message //buf2 username      {cli_sock2=findclientsock(userlist,lastuser.nick);        lastuser.sock=cli_sock2;        if(getthird(buf)!=NULL)        {          domessage(buf2,newcli.nick,getthird(buf));          if(-1==Send(cli_sock2,buf2))            pthread_exit(NULL);        }      }      else      {        if(-1==Send(cli_socket,"You doesn't specify a user,or the user you want to talk to isn't online\n"))          pthread_exit(NULL);      }      break;    case 'q':	//client quit      if(-1==Send(cli_socket,buf))        pthread_exit(NULL);      ListDelete(userlist,cli_socket);      close(cli_socket);      pthread_exit(NULL);      break;    case 'a':	//client talk to all user      while(node!=NULL)      {        client user=node->e;        cli_sock2=user.sock;        if (cli_sock2!=cli_socket)	//don't send the message to your          {   if(getsecond(buf)!=NULL)	//if the message body only contains the :a string            domessage(buf2,newcli.nick,getsecond(buf));          if(-1==Send(cli_sock2,buf2))            pthread_exit(NULL);        }        node=node->next;      }      break;    default :      if(-1==Send(cli_socket,"Sever can't recognize your command\n"))        pthread_exit(NULL);    }  }}int getuser(char *buf,char *username,LList *userlist)	//if the user is online(int the userlist),set the username string,return 0,else return -1{  const char delimiters[] = " ";  char *token, *cp;  cp = strdup(buf);  token = strtok (cp, delimiters);  token = strtok (NULL, delimiters);	//token=username  if(token==NULL) return -1;  strncpy(username,token,namesize);  if(username[strlen(username)-1]='\n')    username[strlen(username)-1]=0;  return useratlist(userlist,username);}char iscmd(const char * message)	//get command{  char cmd;  if((cmd=message[0])!=':')    return 0;  return message[1];}int useratlist(LList *userlist,char *username){  LNode *node=userlist->head->next;  client user;  while(node!=NULL)  {    user=node->e;    if(strncmp(user.nick,username,strlen(username))==0)      return 0;    else node=node->next;  }  return -1;}int findclientsock(LList *userlist,char *username){  LNode *node=userlist->head->next;  client user;  while(node!=NULL)  {    user=node->e;    if(strncmp(user.nick,username,strlen(username))==0)      return user.sock;    else node=node->next;  }  return -1;}char *getsecond(char *message){  const char delimiters[] = " ";  char *token, *cp;  cp = strdup(message);  token = strtok (cp, delimiters);  token = strtok (NULL, delimiters);  return token;}char *getthird(char *message){  const char delimiters[] = " ";  char *token, *cp;  cp = strdup(message);  token = strtok (cp, delimiters);  token = strtok (NULL, delimiters);  token = strtok (NULL, delimiters);  return token;}void domessage(char *dest,char * userfrom,char *message){  strcpy(dest,"From ");  strcat(dest,userfrom);  strcat(dest,": ");  strcat(dest,message);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区高清| 欧美日韩亚洲综合一区二区三区| 欧美一区二区人人喊爽| 天天操天天干天天综合网| 精品视频在线免费看| 日韩精品乱码免费| 日韩女优av电影在线观看| 国产美女精品一区二区三区| 久久精品视频一区二区| 91在线高清观看| 午夜精品福利一区二区蜜股av| 欧美一级夜夜爽| 成人性生交大片免费| 亚洲欧美日韩久久精品| 制服丝袜日韩国产| 国产福利精品导航| 一区二区高清免费观看影视大全| 91精品国产综合久久久久久| 韩国成人福利片在线播放| 自拍偷自拍亚洲精品播放| 538在线一区二区精品国产| 丁香婷婷综合网| 亚洲午夜电影网| 日本一区二区三区电影| 欧美日韩一区二区在线观看视频 | 91精品国产综合久久福利| 九九国产精品视频| 亚洲精品国产a| 2024国产精品| 欧美性感一区二区三区| 国产乱码精品一品二品| 依依成人综合视频| 久久久久久免费毛片精品| 91福利国产精品| 国产精品一区在线| 爽好久久久欧美精品| 中文字幕精品一区| 日韩欧美高清在线| 色先锋资源久久综合| 国产麻豆日韩欧美久久| 丝袜美腿亚洲综合| 亚洲欧美另类综合偷拍| 久久先锋影音av鲁色资源网| 欧美亚洲一区三区| 成人黄色电影在线| 国内精品久久久久影院薰衣草| 亚洲一区二区三区在线播放| 久久久久国产精品厨房| 欧美一区二区三区啪啪| 日本韩国欧美国产| 成人性生交大合| 国产一区二区视频在线| 美女脱光内衣内裤视频久久网站 | 成人毛片在线观看| 精品一区二区在线看| 亚洲午夜在线电影| 国产精品国产三级国产普通话99| 欧美tickle裸体挠脚心vk| 欧美日韩国产综合视频在线观看| 99九九99九九九视频精品| 国产精品2024| 韩国av一区二区| 蜜桃精品视频在线| 日韩精品电影一区亚洲| 亚洲制服丝袜一区| 一区二区三区影院| 伊人一区二区三区| 一区二区不卡在线播放| 亚洲最快最全在线视频| 夜夜嗨av一区二区三区四季av| 一区在线观看免费| 中文字幕亚洲电影| 国产精品国产三级国产普通话99| 国产精品婷婷午夜在线观看| 国产欧美日韩三级| 中文字幕在线一区免费| 国产精品护士白丝一区av| 日韩理论在线观看| 亚洲乱码国产乱码精品精可以看| 国产精品久久久久久久久动漫 | 视频在线观看91| 亚洲成人免费看| 婷婷成人激情在线网| 日韩精品国产精品| 狂野欧美性猛交blacked| 毛片不卡一区二区| 国产精品一区一区| 97成人超碰视| 在线一区二区三区四区五区| 欧美在线制服丝袜| 7777精品伊人久久久大香线蕉最新版| 91精品久久久久久久91蜜桃| 欧美精品日日鲁夜夜添| 日韩三级伦理片妻子的秘密按摩| 日韩一区二区三区高清免费看看| 欧美成人女星排行榜| 久久久久久一二三区| 日本一区二区电影| 一区二区三区在线免费视频| 亚洲电影一区二区三区| 日本亚洲电影天堂| 高清av一区二区| 色八戒一区二区三区| 日韩一区二区精品葵司在线| 国产调教视频一区| 亚洲一区在线观看视频| 精品一二三四区| 99久久精品国产麻豆演员表| 欧美日韩国产精选| 日本一区二区视频在线| 亚洲综合成人在线视频| 精品在线亚洲视频| 色香蕉久久蜜桃| 久久久另类综合| 亚洲自拍欧美精品| 国产精品99久久久| 欧美日韩一级片在线观看| 久久精品亚洲精品国产欧美kt∨ | 国产午夜精品福利| 亚洲综合色噜噜狠狠| 极品美女销魂一区二区三区| 色综合天天天天做夜夜夜夜做| 欧美精品在线观看播放| 中国色在线观看另类| 日韩成人精品在线观看| jlzzjlzz欧美大全| 日韩免费性生活视频播放| 国产精品理论片在线观看| 热久久国产精品| 色呦呦国产精品| 久久久久一区二区三区四区| 午夜伦欧美伦电影理论片| 成人精品免费看| 日韩欧美你懂的| 亚洲国产视频网站| 99视频在线观看一区三区| 日韩欧美一二三| 亚洲一区自拍偷拍| 91在线无精精品入口| 2022国产精品视频| 日韩精品国产精品| 欧美性xxxxxx少妇| 亚洲欧洲日产国产综合网| 国产一区福利在线| 91精品国产高清一区二区三区蜜臀| 成人欧美一区二区三区视频网页| 国产美女视频91| 精品国产制服丝袜高跟| 日本成人中文字幕| 欧美精选一区二区| 亚洲h在线观看| 欧美伊人精品成人久久综合97 | 精品国产三级电影在线观看| 亚洲男同性恋视频| 成人免费毛片片v| 久久亚洲综合色| 黑人精品欧美一区二区蜜桃| 这里只有精品免费| 午夜精品福利久久久| 欧美日韩亚洲综合在线| 亚洲一区二区欧美日韩| 欧美少妇bbb| 亚洲成av人片一区二区梦乃| 欧美视频一区二区三区| 亚洲大片一区二区三区| 在线一区二区三区做爰视频网站| 国产精品乱子久久久久| 91尤物视频在线观看| 国产精品成人免费| 色综合天天性综合| 亚洲激情在线激情| 欧美艳星brazzers| 日韩精品电影在线观看| 日韩亚洲欧美一区| 激情综合色综合久久| 国产亚洲欧洲一区高清在线观看| 韩国午夜理伦三级不卡影院| 久久先锋影音av鲁色资源| 国产成人一区二区精品非洲| 国产精品福利一区二区| 99精品国产热久久91蜜凸| 亚洲激情av在线| 欧美日韩国产一级| 蜜臂av日日欢夜夜爽一区| 国产亚洲欧美日韩俺去了| 成人网男人的天堂| 一区二区三区四区视频精品免费 | 国产成人在线视频网站| 成人免费视频在线观看| 欧美手机在线视频| 免费黄网站欧美| 国产三级欧美三级| 色婷婷av一区二区三区大白胸| 亚洲五码中文字幕| 2020日本不卡一区二区视频| 国产98色在线|日韩| 亚洲精品乱码久久久久久| 欧美日韩国产电影| 国产裸体歌舞团一区二区| 中文字幕亚洲一区二区av在线|