iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >如何实现linux聊天室程序
  • 827
分享到

如何实现linux聊天室程序

2024-04-02 19:04:59 827人浏览 独家记忆
摘要

这篇文章主要讲解了“如何实现linux聊天室程序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现linux聊天室程序”吧!代码一:#ifndef&nb

这篇文章主要讲解了“如何实现linux聊天室程序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现linux聊天室程序”吧!

代码一:

#ifndef _i_h
 
#define _i_h
 
#include <math.h>
#include <stdio.h>
#include <sys/Socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <inttypes.h>
#include <time.h>
#include <sys/ioctl.h> 
#include <net/if.h>
#include <signal.h>
#include <ncurses.h>
#include <math.h>
 
#define sevr_ip   "127.0.0.1"
#define sevr_port  8081
#define cntnt_len  150
#define msg_len   sizeof(struct msg)
#define addr_len  sizeof(struct sockaddr)
#define usr_len   sizeof(struct user)
#define prt_len   8
#define hstr_len  sizeof(struct chat_history)
 

int mainfd;
int sockfd;
int count;
struct sockaddr_in server;
 

struct msg
{
  int flag; 
  int id_from;
  int id_to;
  char content[cntnt_len];
  char append[10]; 
};
 

struct user
{
  int id;
  char name[10];
  char passWord[10];
  char *p_chatlog;
  struct sockaddr user_addr; 
};

struct chat_history
{
  char content[cntnt_len];
  char time[25];
  int to;
  int from;
  int count;
};
 

extern int i_saveto_chat(struct msg *pmsg);
 
int i_clean_stdin ()
{
  while ('\n' == getchar())
  {
    continue;
  }
 
  return(0);
}
 
int i_print(char *pmsg, int size)
{
  int i = 1;
 
  for (i; i<= size; i++)
  {
    if (*pmsg != '\n')
    {
      printf("%c", *pmsg);
      pmsg ++;
    }
    else
    {
      return(0);
    }
  }
 
  return(0);
}
int i_input(char *p_input)
{
  char c = '\0';
  int i; 
 
  for (i = 0; i < cntnt_len; i++)
  {
    p_input[i] = getchar();
    if (p_input[i] =='\n')
    {
      return(0);   
    }    
  }
 
  printf("you have input long enough!\n");
  return(0);
}
int i_socket(int domain, int type, int protocol)
{
  int fd; 
 
  if ((fd = socket(domain, type, protocol)) == -1)
  {
    perror("creat socket error:");
    exit(1);
  }
   
  return(fd); 
}
 
int i_bind(int fd, const struct sockaddr *addr, int namelen)
{
  if (-1 == bind(fd, addr, namelen))
  {
    perror("i_bind error:");
    exit(1);
  }
   
  return (0);
}
 
int i_recvfrom(int fd, void *buf, size_t len, int flags, 
    struct sockaddr *addr, int *size)
{  
  if (-1 == recvfrom(fd, buf, len, flags, addr, size))
  {
    perror("i_recvfrom error:");
    exit(1);  
  }
   
  return(0);
}
 
int i_sendto(int fd, void *buf, size_t len, int flags,
    struct sockaddr *addr, int size)
{
  if (-1 == sendto(fd, buf, len, flags, addr, size))
  {
    perror("i_sendto error");
    exit(1);  
  }
   
  return (0);
}
 
int i_open(const char *pathname, int flags)
{
  int fd;
  if ((fd = open(pathname, flags)) == -1)
  {
    perror("open_failed");
    exit(1);
  }
   
  return (fd);
}
int i_read(int fd, void *msg, int len)
{
  if(-1 == read(fd, msg, len))
  {
    perror("i_read error");
    exit(1);
  }
  return(0);
}
int i_write(int fd, void *msg, int len)
{
  if (-1 == write(fd, msg, len))
  {
    perror("i_write error");
    exit(0);
  }
  return(0);
}
 

int i_init()
{
  mainfd = i_open("./chat_log", o_rdwr|o_creat);
  sockfd = i_socket(af_inet, sock_dgram, 0);
 
  
  bzero(&server, sizeof(server));
  server.sin_family = af_inet;
  inet_pton(af_inet, "127.0.0.1", &server.sin_addr);
  server.sin_port = htons(sevr_port);
 
  perror("init");
   
  return (0);
}
 
char *i_get_time()
{
  time_t time_now;
  time(&time_now);
 
  return(ctime(&time_now));
}
int i_lseek(int fd, off_t size, int position)
{
  if (-1 == lseek(fd, size, position))
  {
    perror("seek error");
    exit(1);
  }
  return(0);
}
int i_saveto_chat(struct msg *pmsg)
{  
  struct chat_history hstr;
 
 
  bzero(&hstr, hstr_len);
  count = count + 1;
  hstr.count =count;
  hstr.from = pmsg->id_from;
  hstr.to = pmsg->id_to;
  strncpy(hstr.content, pmsg->content, cntnt_len);
  strncpy(hstr.time, i_get_time(), 25);
 
  i_lseek(mainfd, 0, seek_end);
 
  i_write(mainfd, &hstr, hstr_len);
 
  return(0);
}
 
int i_print_history(int len, int i)
{
  struct chat_history chat_reader;
  int j;
  int position;
   
  bzero(&chat_reader, hstr_len);
  if (i != 0)
  {
    position = len*i*hstr_len;
    i_lseek(mainfd, position, seek_end);
  }
  else
  {
    position = len*i*hstr_len;
 
    i_lseek(mainfd, hstr_len, seek_set);
  }
     
  for (j = 1; j <= len; j++)
  {
     
    i_read(mainfd, &chat_reader, hstr_len);
    printf("\n#item%d:id%dto id%d \n", j,
      chat_reader.from, chat_reader.to);
    i_print(chat_reader.content, cntnt_len);
    printf("\n time:%s\n", chat_reader.time);
  }
 
  return(0);
}
 
#endif

代码二:

#include "i.h"
 
int user_list_fd;
 

int init()
{
  i_init();
 
  user_list_fd = i_open("./user_list", o_rdwr|o_creat);
 
  struct user usr;
  
  memset((struct user*)&usr, '\0', sizeof(struct user));
  i_lseek(user_list_fd, 0, seek_set);
  i_write(user_list_fd, (char*)&usr, usr_len);
 
  
  i_bind(sockfd, (struct sockaddr*)&server, addr_len);  
 
  struct chat_history apple; 
 
  bzero(&apple, hstr_len);
  i_lseek(mainfd, 0, seek_set);
  i_write(mainfd, &apple, hstr_len);
  i_lseek(mainfd, -hstr_len, seek_end);
  i_read(mainfd, &apple, hstr_len);
  count = apple.count;
 
  return(0);
}

 

int send_msg(struct msg *msg_recv, struct sockaddr *addr)
{
  int i;
  struct user usr;
 
  
  printf("a ordinar message come !\n");
   
  i = msg_recv->id_to;
  i_lseek(user_list_fd, i*usr_len, seek_set);
  i_read(user_list_fd, &usr, usr_len);
  strncpy(msg_recv->append, usr.name, 10);
 
  i_sendto(sockfd, msg_recv, msg_len, 0,
    &(usr.user_addr), addr_len);
   
  printf("id%d send a message to id%d sucess!\n", msg_recv->id_from, msg_recv->id_to);
 
  return(0);
}
int check_login(struct msg *msg_recv, struct sockaddr *addr)
{
  int i = msg_recv->id_from;;
  struct user usr;
 
  
  printf("a login request come!\n");
   
  
  i_lseek(user_list_fd, i*usr_len, seek_set);
  i_read(user_list_fd, &usr, usr_len);
 
  int n;
  n = strcmp(usr.password, msg_recv->content);
  
  if (n == 0)
  {
    
    i_lseek(user_list_fd, -usr_len, seek_cur);
    usr.user_addr = *addr;
    i_write(user_list_fd, &usr, usr_len);
    
    i_sendto(sockfd, (struct msg*)msg_recv, sizeof(struct msg), 0,
      &(usr.user_addr), addr_len);
     
  }
  else
  {
    
    if (0 != n)
    {
      printf("id %d login error.\n", i);
      bzero(msg_recv->content, cntnt_len);     
      msg_recv->flag = -1;
      i_sendto(sockfd, (struct msg*)msg_recv, sizeof(struct msg), 0,
        &(usr.user_addr), addr_len);
     
    }
    return(1);
  }
  printf("id %d login sucess!\n", i); 
   
  return(0);
}
int reg_user(struct msg *msg_recv, struct sockaddr *addr)
{
  struct user usr;
   
  printf("a regit requet come:\n");
 
  
  int n;
  i_lseek(user_list_fd, -usr_len, seek_end);
  i_read(user_list_fd, &usr, usr_len);
  
  const char *name;
  const char *password;
 
  name = &(msg_recv->content[0]);
  password = &(msg_recv->content[10]);
  strcpy((usr.name), name);
  strcpy(usr.password, password);
  memcpy(&(usr.user_addr),addr, addr_len);
 
  usr.id = (usr.id + 1);
  i_lseek(user_list_fd, 0, seek_end);
  i_write(user_list_fd, &usr, usr_len);
 
  msg_recv->id_from = usr.id;
  
  i_sendto(sockfd, (struct msg*)msg_recv, sizeof(struct msg), 0,
    addr, addr_len); 
 
  printf("id %d reGISt sucess!\n", usr.id);
 
  return(0);
   
}
int msg_cntl()
{
  struct msg msg_recv;
  struct sockaddr addr_recv;
 
  printf("begin listen input...\n");
  int size = addr_len;
 
  for (;;)
  {
    bzero(&msg_recv, msg_len);
    i_recvfrom(sockfd, &msg_recv, sizeof(struct msg), 0,
      &addr_recv, &size);
    printf("message received...\n");
 
    i_saveto_chat(&msg_recv);
 
    switch (msg_recv.flag)
    {
      case 1 :
        send_msg(&msg_recv,(struct sockaddr*)&addr_recv);
        break;
      case 2 :
        check_login(&msg_recv, (struct sockaddr*)&addr_recv);
        break;     
      case 3 :
        reg_user(&msg_recv, (struct sockaddr*)&addr_recv);
        break;
      default :
        break;
    }
  }
  return(0);
}


int exit_sys()
{
  close(sockfd);
  close(mainfd);
  close(user_list_fd);
  printf("exit system");
  kill(0, sigabrt);
 
  exit(0);
}

 

int get_page_size()
{
  struct chat_history page_size_reader;
   
  i_lseek(mainfd, -hstr_len, seek_end);
  i_read(mainfd, &page_size_reader, hstr_len);
 
  return(page_size_reader.count);
}
 
int read_chat_history()
{
  printf("****char*history***");
  printf("(n-nextpage; p-prepage; q-quit)\n");
 
  int page_num;
  int remains;
  int berry = get_page_size();
 
 
  page_num = berry / 8;
  remains = berry % 8;
 
  if (remains != 0)
    page_num ++;
  else
    page_num = page_num;
     
  printf("there are %d page total %d items", 
    page_num, berry);
 
  int i = -1;
 
  while (1)
  {  
    char flag; 
 
    if ((berry + i*8) >= 0)
    {
      printf("(%d~%d)\n", (berry + i*8), (berry + (i+1)*8));
 
      i_print_history(prt_len, i);
 
      printf("@@@\n");
      while ('\n' == (flag = getchar()))
      {
      }
 
      switch (flag)
      {
        case 'p' :
          i--;
          break;
        case 'n' :
          i++;
          break;
        case 'q' :
          return(0);
        default :
          break;
      }  
      if (i >= 0)
      {
        printf("have at the end!\n");
        printf("return to menu!\n");
      }    
    }
    else
    {
      printf("(1~%d)\n", remains);      
     
      i_print_history(remains, 0);
       
      printf("#########over##############\n");
 
      return(0);
    }  
  }
     
  return(0);
}


int menu()
{
  sleep(1);
 
  printf("----------help----menu---------\n");
  printf("\t r--report to user\n");
  printf("\t c--chat history\n");
  printf("\t h--help menu\n");
  printf("\t e--exit the system\n");
  printf("----------help_menu---------\n");
 
  int command = 0;
 
  printf("input command>");
  command = getchar();
  switch(command)
  {
 
    case 'c':
      read_chat_history();
      break;
    case 'e':
      exit_sys();
      break;
    case 'r':
      //report();
      //break;
    default :
      menu();
      break;
  }
  getchar();
   
  return(0);
}

int main()
{
  init();
  pid_t pid;
  switch (pid = fork())
  {
    case -1 :
      perror("fork error\n");
      exit(1);
      break;
    case 0 :
      msg_cntl();
      break;
    default :
      menu();
      break;
  }
 
  return(0);
}

代码三:

#include "i.h"
 
#define start_port 8089
 
struct sockaddr_in my_addr;
int my_id;
 
int my_log();
 

int i_send_msg()
{    
  int id;
  struct msg the_msg;
  char end = '@';
 
  printf("input recver id:");
  scanf("%d", &id);
  getchar();
  printf("\ninput content:");
  i_input(the_msg.content);  
 
  char flag = 'y';
     
  if (1)
  {
    the_msg.flag = 1;
    the_msg.id_from = my_id;
    the_msg.id_to = id;
     
    i_sendto(sockfd, &the_msg, sizeof(struct msg), 0,
      (struct sockaddr*)&server, sizeof(struct sockaddr));
     
    i_saveto_chat(&the_msg); 
 
    printf("send to id:%d success.\n", my_id);
    return(0);
  }
  else
    return(1);
 
  return(0);
}
 
int reply()
{
  return(0);
}
int send_file()
{
  return(0);
}


int init()
{  
  struct ifreq req;
  struct sockaddr_in *host;
  int port;
 
  i_init();
  
  bzero(&my_addr, sizeof(struct sockaddr));
  my_addr.sin_family = af_inet;
  strcpy(req.ifr_name, "lo");
  if ( ioctl(sockfd, siocgifaddr, &req) < 0 ) 
  {
    perror("get local ip error");
    exit(1);
    } 
 
  host = (struct sockaddr_in*)&(req.ifr_addr);
  printf("ip: %s\n", inet_ntoa(host->sin_addr));
 
  memcpy(&my_addr, (struct sockaddr_in*)&(req.ifr_addr),
     sizeof(struct sockaddr_in));
 
  port = start_port;
 
  do
  {
    port++;
    my_addr.sin_port = htons(port);
    bind(sockfd, (struct sockaddr*)&my_addr,
       sizeof(struct sockaddr));   
  } 
  while (errno == eaddrinuse);
 
  struct chat_history apple; 
   
  memset(&apple, 'b', hstr_len);
  i_lseek(mainfd, 0, seek_set);
  apple.count = 0;
  i_write(mainfd, &apple, hstr_len);
  i_lseek(mainfd, -hstr_len, seek_end);
  i_read(mainfd, &apple, hstr_len);
  count = apple.count;
 
  
  printf("port:%d\n", port); 
  printf("init successful!!!\n"); 
 
  return(0);
 
}


int get_page_size()
{
  struct chat_history page_size_reader;
   
  i_lseek(mainfd, -hstr_len, seek_end);
  i_read(mainfd, &page_size_reader, hstr_len);
 
  return(page_size_reader.count);
}
 
int read_chat_history()
{
  printf("****char*history***");
  printf("(n-nextpage; p-prepage; q-quit)\n");
 
  int page_num;
  int remains;
  int berry = get_page_size();
 
 
  page_num = berry / 8;
  remains = berry % 8;
 
  if (remains != 0)
    page_num ++;
  else
    page_num = page_num;
     
  printf("there are %d page total %d items", 
    page_num, berry);
 
  int i = -1;
 
  while (1)
  {  
    char flag; 
 
    if ((berry + i*8) >= 0)
    {
      printf("(%d~%d)\n", (berry + i*8), (berry + (i+1)*8));
 
      i_print_history(prt_len, i);
 
      printf("@@@\n");
      while ('\n' == (flag = getchar()))
      {
      }
 
      switch (flag)
      {
        case 'p' :
          i--;
          break;
        case 'n' :
          i++;
          break;
        case 'q' :
          return(0);
        default :
          break;
      }  
      if (i >= 0)
      {
        printf("have at the end!\n");
        printf("return to menu!\n");
      }    
    }
    else
    {
      printf("(1~%d)\n", remains);      
     
      i_print_history(remains, 0);
       
      printf("#########over##############\n");
 
      return(0);
    }  
  }
     
  return(0);
}


void exit_sys()
{
  close(sockfd);
  close(mainfd);
  kill(0, sigabrt);
 
  exit(0);
}

 

int print_menu()
{
  printf("\n--------------help--menu----------------\n");
  printf("\t h--help munu\n");
  printf("\t s--send message\n");
  printf("\t r--reply to\n");
  printf("\t c--chat history\n");
  printf("\t f--send files\n");
  printf("\t e--exit the system\n");
  printf("----------------help--menu----------------\n");
}
int get_input(char *command)
{  
  printf(">");
  scanf("%c", command);
 
  return(1);
}
int menu()
{
  
  sleep(1);
 
  print_menu();
   
  char command;
 
  while (1 == get_input(&command))
  {  
    switch(command)
    {
      case 'h':
        print_menu();
        break;   
      case 's':
        i_send_msg();
        break;
      case 'r':
        reply();
        break;
      case 'f':
        send_file();
        break;
      case 'c':
        read_chat_history();
        break;
      case 'e':
        exit_sys();
        break;
      default :
        printf(">");
        break;
    }
  }
  return(0);
}


int ordnary_msg_recv(struct msg *pmsg)
{
  char time_info[25];
  char end_symble;
  end_symble = '&';
 
  
  printf("message:from %s(id%d) to u:\n", pmsg->append, pmsg->id_from);
  i_print(pmsg->content, msg_len);
  printf("\n\t%s", i_get_time());
 
  return(0);
}
int file_msg_recv(struct msg *pmsg)
{
}
int handle_msg(struct msg *pmsg)
{  
  if (pmsg->flag == 1)
  {
    ordnary_msg_recv(pmsg);
    return(0);
  }
  else if (pmsg->flag >= 4)
  {
    file_msg_recv(pmsg);
    return(0);
  }  
  return(0);
}
int listen_msg()
{
  struct msg msg_recv;
  struct sockaddr addr_recv;
  int len = addr_len;
 
  printf("begin listen...\n");
 
  for ( ; ; )
  {  
    i_recvfrom(sockfd, &msg_recv, msg_len, 0, 
       &addr_recv, &len);
 
    i_saveto_chat(&msg_recv); 
     
     ordnary_msg_recv(&msg_recv);
  }
}
 

 

int login()
{
  
  printf("*****login>>\n");
  printf("id:");
  scanf("%d", &my_id);
  
  char password[15];
  printf("\npassword(*less 15 char):");
  scanf("%s", password);
  getchar();
   
  
  struct msg log_msg;
 
  bzero(&log_msg, msg_len);
  log_msg.flag = 2;
  log_msg.id_from = my_id;
  log_msg.id_to = 0;
  strncpy(log_msg.content, password, 15);
 
  i_saveto_chat(&log_msg); 
   
  i_sendto(sockfd, (struct msg*)&log_msg, msg_len, 0, 
    (struct sockaddr*)&server, sizeof(struct sockaddr));
//printf("log_msg : %d\n", log_msg.id_from);
//printf("password: %s\n", log_msg.content);
  
  struct sockaddr in_addr;
  int len = addr_len;
  i_recvfrom(sockfd, (struct msg*)&log_msg, msg_len,0,
    &in_addr, &len);
  if (2 == log_msg.flag)
  {
    printf("login success\n");
    return(0);
  }  
  else
  {
    printf("login error:%s\n", log_msg.content);
    printf("please relog..\n");
    menu();
  }
   
  return (0);
}
int regist()
{
  printf("*****regist>>\n");
  
  char name[10];
 
  bzero(name, 10);
  printf("input your chat name(less 8 char):");
  scanf("%s", name);
 
  //name[9] = ';';     
  
  char password[15];
 
  bzero(password, 15);
  printf("\ninput your password(less 14 char):");
  scanf("%s", password);
 
  
  struct msg reg_msg;
 
  bzero(&reg_msg, msg_len);
  reg_msg.flag = 3;
  reg_msg.id_from = 0;
  reg_msg.id_to = 0;
  bzero(reg_msg.content, cntnt_len);
  strncpy(reg_msg.content, name, 10);
  strncpy(&(reg_msg.content[10]), password, 15);
  reg_msg.content[25] = '\n';
 
  i_saveto_chat(&reg_msg); 
 
  
  i_sendto(sockfd, (struct msg*)&reg_msg, sizeof(struct msg), 0, 
    (struct sockaddr*)&server, addr_len);
  
  printf("wating for server reply...\n");
 
  struct sockaddr in_addr;
  struct msg msg_back;
  int len = addr_len;
   
  bzero(&in_addr, addr_len);
  bzero(&msg_back, msg_len);
  i_recvfrom(sockfd,(struct msg*)&msg_back, msg_len,0,
    &in_addr, &len);
 
  
  if (3 != msg_back.flag)
  {
    printf("error: %s \n", msg_back.content);
    exit(1);
  }
  else
    my_id = msg_back.id_to;
    printf("congratulate! you have regist"
      "id %s(id %d) success\n", msg_back.content, msg_back.id_to);
 
    login();
 
  return(0); 
}
 
int my_log()
{
  
  char flag;
  printf("are you want login or regist(l/r)\n");
  scanf("%c", &flag);
  getchar();
  switch (flag){
    case 'l' :
      login();
      break;
    case 'r' :
      regist();
      break;
    default :
      printf("error input\n");
      my_log();
      break;
  }
  return (0);
}

 
int main()
{
  init();
  printf("\n************welcome!************\n");
  my_log();
 
  pid_t pid;
 
  switch (pid = fork())
  {
    case -1 :
      perror("fork error!\n");
      exit(1);
      break;
    case 0 :
      listen_msg();
      break;
    default :
      menu();
      break;
  }
}

感谢各位的阅读,以上就是“如何实现linux聊天室程序”的内容了,经过本文的学习后,相信大家对如何实现linux聊天室程序这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 如何实现linux聊天室程序

本文链接: https://www.lsjlt.com/news/95717.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何实现linux聊天室程序
    这篇文章主要讲解了“如何实现linux聊天室程序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现linux聊天室程序”吧!代码一:#ifndef&nb...
    99+
    2024-04-02
  • 微信小程序中如何实现聊天室
    小编给大家分享一下微信小程序中如何实现聊天室,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!微信小程序中如何实现聊天室utils文...
    99+
    2024-04-02
  • 微信小程序如何实现简单聊天室
    这篇文章主要介绍了微信小程序如何实现简单聊天室的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序如何实现简单聊天室文章都会有所收获,下面我们一起来看看吧。cha.js// pages/chat/...
    99+
    2023-06-08
  • Java NIO怎么实现聊天室程序
    本文小编为大家详细介绍“Java NIO怎么实现聊天室程序”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java NIO怎么实现聊天室程序”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。服务端:package&n...
    99+
    2023-06-17
  • python epoll聊天室程序
     仿照《how to use linux epoll with python》写的一个聊天室程序,比较简单。 python版本:2.7.3   #!/usr/bin/python  # -*- coding:utf-8 -*-  impo...
    99+
    2023-01-31
    聊天室 程序 python
  • 如何实现react-native聊天室
    这篇文章将为大家详细讲解有关如何实现react-native聊天室,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、前言最近都沉浸在react native原生app开发...
    99+
    2024-04-02
  • 微信小程序实现聊天室功能
    本文通过实例为大家分享了微信小程序实现聊天室的具体代码,供大家参考,具体内容如下 1.实现效果展示 2.room.wxml <view class="container"...
    99+
    2024-04-02
  • 微信小程序实现简单聊天室
    本文实例为大家分享了微信小程序实现简单聊天室的具体代码,供大家参考,具体内容如下 cha.js // pages/chat/chat.js // 获取小程序实例 let app ...
    99+
    2024-04-02
  • Java如何实现聊天室界面
    这篇“Java如何实现聊天室界面”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java如何实现聊天室界面”文章吧。服务器端:...
    99+
    2023-06-30
  • 如何使用socket.io实现聊天室
    这篇文章主要为大家展示了“如何使用socket.io实现聊天室”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用socket.io实现聊天室”这篇文章吧。1...
    99+
    2024-04-02
  • Unity如何实现聊天室功能
    这篇文章给大家分享的是有关Unity如何实现聊天室功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。聊天室服务器服务器需要有以下几个步骤确定Socket协议类型(采用TCP协议或者UDP协议)2、绑定服务器的IP...
    99+
    2023-06-08
  • php如何实现聊天室功能
    本篇内容主要讲解“php如何实现聊天室功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何实现聊天室功能”吧!php实现聊天室功能的方法:首先创建前端代码;然后在PHP后端文件中通过创建...
    99+
    2023-06-20
  • Java聊天室之实现聊天室客户端功能
    目录一、题目描述二、解题思路三、代码详解一、题目描述 题目实现:实现聊天室客户端。运行程序,用户登录服务器后,可以从用户列表中选择单个用户进行聊天,也可以选择多个用户进行聊天。 二、...
    99+
    2022-11-13
    Java实现聊天室 Java 聊天室 Java 客户端
  • Java实现单线程聊天室
    本文实例为大家分享了Java实现单线程聊天室的具体代码,供大家参考,具体内容如下 一. Socket API简介 1. Socket编程 Java.net.Socket类代表一个套接...
    99+
    2024-04-02
  • Java实现多线程聊天室
    本文实例为大家分享了Java实现多线程聊天室的具体代码,供大家参考,具体内容如下 之前呢已经用单线程的方式来实现了聊天室,但其实它的功能并不齐全,下面用多线程来实现,功能会比单线程聊...
    99+
    2024-04-02
  • Java聊天室之实现聊天室服务端功能
    目录一、题目描述二、解题思路三、代码详解多学一个知识点一、题目描述 题目实现:实现聊天室服务器端功能。运行程序,服务端等待客户端连接,并显示客户端的连接信息。 二、解题思路 创建一个...
    99+
    2022-11-13
    Java实现聊天室 Java 聊天室 Java 服务端
  • 如何利用C++实现一个简单的聊天室程序?
    如何利用C++实现一个简单的聊天室程序?在信息时代,人们越来越注重网络交流。而聊天室作为一种常见的沟通工具,具有实时性和交互性的特点,被广泛应用于各个领域。本文将介绍如何利用C++语言实现一个简单的聊天室程序。首先,我们需要建立一个基于客户...
    99+
    2023-11-04
    C++ 实现 聊天室程序
  • Python实现web聊天室
    使用Python模块中的select模块实现web聊天室功能select模块Python中的select模块专注于I/O多路复用,提供了select  poll  epoll三个方法(其中后两个在Linux中可用,windows仅支持sel...
    99+
    2023-01-31
    聊天室 Python web
  • C++如何实现TCP聊天室功能
    小编给大家分享一下C++如何实现TCP聊天室功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下TCPServer.cpp:// TCPSer...
    99+
    2023-06-20
  • PHP+Socket之如何实现websocket聊天室
    这篇文章主要介绍了PHP+Socket之如何实现websocket聊天室的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP+Socket之如何实现websocket聊天室文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作