基于C语言实现实现一个简易聊天室

基于C语言实现实现一个简易聊天室

实现一个基于 C 语言的简易聊天室,通常需要使用 TCP 套接字编程,支持多个客户端与服务器通信。以下是完整的实现过程,包括服务器端和客户端的代码。


功能需求

  1. 服务器端:
    • 接受多个客户端连接。
    • 广播客户端发送的消息给所有连接的客户端。
  2. 客户端:
    • 连接到服务器。
    • 可以发送消息并接收广播消息。

代码实现

1. 头文件和库
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <pthread.h>

2. 服务器端实现
#define PORT 8888
#define MAX_CLIENTS 10
#define BUFFER_SIZE 1024

int client_sockets[MAX_CLIENTS] = {
   0};
pthread_mutex_t clients_mutex = PTHREAD_MUTEX_INITIALIZER;

void broadcast_message(const char *message, int sender_socket) {
   
    pthread_mutex_lock(&clients_mutex);
    for (int i = 0; i < MAX_CLIENTS; i++) {
   
        if (client_sockets[i] > 0 && client_sockets[i] != sender_socket) {
   
            send(client_sockets[i], message, strlen(message), 0);
        }
    }
    pthread_mutex_unlock(&clients_mutex);
}

void *handle_client(void *arg) {
   
    int client_socket = *(int *)arg;
    char buffer[BUFFER_SIZE];
    int bytes_read;

    while ((bytes_read = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值