#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <stdarg.h>
#include "kernel_smartptr.h"
#include "kernel_uniqueptr.h"
#include <fcntl.h>
#include <pthread.h>
#include <time.h>
Go to the source code of this file.
◆ BUFFER_SIZE [1/2]
◆ BUFFER_SIZE [2/2]
◆ DEFAULT_TCP_PORT
#define DEFAULT_TCP_PORT 5100 |
◆ MAX_CLIENTS [1/2]
◆ MAX_CLIENTS [2/2]
◆ add_new_client()
void add_new_client |
( |
int | sock, |
|
|
int | client_id, |
|
|
const char * | username ) |
클라이언트 정보를 스마트 포인터로 관리하는 배열
- Parameters
-
client_infos | 클라이언트 정보를 담는 스마트 포인터 배열 |
- Returns
- void
Definition at line 206 of file kernel_chat.c.
◆ auto_daemon_mode()
void auto_daemon_mode |
( |
| ) |
|
자동 데몬화 모드 함수
- Parameters
-
- Returns
- void
Definition at line 622 of file kernel_chat.c.
◆ broadcast_message()
void broadcast_message |
( |
int | sender_fd, |
|
|
char * | message, |
|
|
int | room_id ) |
특정 채팅방에 있는 모든 클라이언트에게 메시지를 브로드캐스트하는 함수
- Parameters
-
sender_fd | 메시지를 보낸 클라이언트의 파일 디스크립터 |
message | 브로드캐스트할 메시지 |
room_id | 메시지를 보낼 채팅방의 ID |
sender_fd | 메시지를 보낸 클라이언트의 파일 디스크립터 |
message | 브로드캐스트할 메시지 |
room_id | 메시지를 보낼 채팅방의 ID |
- Returns
- void
Definition at line 260 of file kernel_chat.c.
◆ client_handler()
void * client_handler |
( |
void * | arg | ) |
|
클라이언트와의 통신을 처리하는 스레드 함수
- Parameters
-
arg | 클라이언트 정보를 담고 있는 스마트 포인터 구조체의 포인터 |
- Returns
- void* 스레드 종료 시 반환값 (NULL)
Definition at line 323 of file kernel_chat.c.
◆ create_network_tcp_process()
int create_network_tcp_process |
( |
int | num_tcp_proc, |
|
|
| ... ) |
TCP 서버를 생성하고 클라이언트 연결을 처리하는 함수
- Parameters
-
num_tcp_proc | 생성할 TCP 프로세스 수 |
... | 서버의 IP 주소와 포트를 인자로 받습니다. |
- Returns
- int 성공 시 0, 실패 시 -1 반환
Definition at line 392 of file kernel_chat.c.
◆ create_unique_ptr()
UniquePtr create_unique_ptr |
( |
size_t | size, |
|
|
void(* | deleter )(void *) ) |
클라이언트 정보를 스마트 포인터로 관리하는 배열
- Parameters
-
client_infos | 클라이언트 정보를 담는 스마트 포인터 배열 |
- Returns
- void
클라이언트 정보를 스마트 포인터로 관리하는 배열
- Parameters
-
size | 할당할 메모리 크기 |
deleter | 소멸자 함수 |
- Returns
- 생성된 UniquePtr 구조체
Definition at line 89 of file kernel_uniqueptr.h.
◆ daemonize()
daemonize 함수 구현
- Parameters
-
- Returns
- void
Definition at line 559 of file kernel_chat.c.
◆ kernel_chat()
void kernel_chat |
( |
int | num_args, |
|
|
| ... ) |
네트워크와 클라이언트 간의 채팅 처리 함수
- Parameters
-
num_args | 가변 인자 개수 (서버 IP와 포트 전달) |
... | 서버 IP 주소와 포트를 가변 인자로 전달 |
Definition at line 707 of file kernel_chat.c.
◆ kill_room()
void kill_room |
( |
int | room_id | ) |
|
클라이언트를 강제로 퇴장시키는 함수
- Parameters
-
username | 퇴장시킬 클라이언트의 사용자명 |
username | 퇴장시킬 클라이언트의 사용자명 |
- Returns
- void
Definition at line 180 of file kernel_chat.c.
◆ kill_user()
void kill_user |
( |
const char * | username | ) |
|
클라이언트를 강제로 퇴장시키는 함수
클라이언트 정보를 스마트 포인터로 관리하는 배열
- Parameters
-
username | 퇴장시킬 클라이언트의 사용자명 |
username | 퇴장시킬 클라이언트의 사용자명 |
- Returns
- void
- Parameters
-
client_infos | 클라이언트 정보를 담는 스마트 포인터 배열 |
- Returns
- void
Definition at line 239 of file kernel_chat.c.
◆ list_users()
네트워크와 클라이언트 간의 채팅 처리 함수
클라이언트를 강제로 퇴장시키는 함수
- Parameters
-
num_args | 가변 인자 개수 (서버 IP와 포트 전달) |
... | 서버 IP 주소와 포트를 가변 인자로 전달 |
고유 포인터 구조체
참조 카운트가 1인 스마트 포인터로, 다른 스마트 포인터와 공유되지 않습니다.
- Parameters
-
- Returns
- void
Definition at line 152 of file kernel_chat.c.
◆ log_chat_message()
void log_chat_message |
( |
const char * | message | ) |
|
서버 측에서 발생한 채팅 메시지를 로그로 저장하는 함수
채팅 메시지를 로그 파일에 저장하는 함수
- Parameters
-
message | 저장할 메시지 |
message | 저장할 메시지 |
- Returns
- void
Definition at line 287 of file kernel_chat.c.
◆ logo()
◆ manual_server_mode()
void manual_server_mode |
( |
| ) |
|
수동 서버 관리 모드 함수
- Parameters
-
- Returns
- void
Definition at line 633 of file kernel_chat.c.
◆ release_client()
void release_client |
( |
int | sock | ) |
|
클라이언트 정보를 스마트 포인터로 관리하는 배열
- Parameters
-
client_infos | 클라이언트 정보를 담는 스마트 포인터 배열 |
- Returns
- void
Definition at line 224 of file kernel_chat.c.
◆ send_server_message()
void send_server_message |
( |
char * | message | ) |
|
서버 메시지를 브로드캐스트하는 함수
- Parameters
-
- Returns
- void
- Parameters
-
message | 서버에서 브로드캐스트할 메시지 |
argument | message 서버에서 브로드캐스트할 메시지 |
- Returns
- void
Definition at line 541 of file kernel_chat.c.
◆ server_input_handler()
void * server_input_handler |
( |
void * | arg | ) |
|
서버 측에서 사용자 입력을 처리하는 스레드 함수
표준 입력으로부터 메시지를 받아 서버 메시지로 브로드캐스트합니다.
- Parameters
-
- Returns
- void* 스레드 종료 시 반환값 (NULL)
- Parameters
-
arg | 미사용 |
return | void* 스레드 종료 시 반환값 (NULL) |
argument | arg 미사용 |
- Returns
- void* 스레드 종료 시 반환값 (NULL)
Definition at line 482 of file kernel_chat.c.
◆ client_infos
클라이언트 정보를 스마트 포인터로 관리하는 배열
서버 메시지를 브로드캐스트하는 함수
- Note
- 최대 MAX_CLIENTS 개의 클라이언트를 관리합니다.
- Parameters
-
message | 서버에서 브로드캐스트할 메시지 |
argument | message 서버에서 브로드캐스트할 메시지 |
- Returns
- void
Definition at line 72 of file kernel_chat.c.
◆ log_mutex
pthread_mutex_t log_mutex = PTHREAD_MUTEX_INITIALIZER |