Toy_Project 3

[C] C언어 멀티 프로세스 채팅 서버 만들기

지난번에 멀티 스레드 채팅 서버를 만든 적이 있다. (궁금하면 여기를 참고) 이번 포스팅은 멀티 프로세스 채팅 서버를 C로 구현해봤다. (사실 친구의 수업에서 진행하는 프로젝트인데 재미있어 보여서 따라 했다.) C언어 + fork의 조합 때문에 전체적인 코드가 길어지기 때문에 주요 로직에 대해서만 정리를 해야겠다. 서버 코드 서버의 코드에서 사용한 공유 메모리 종류이다. 전체적인 채팅 알고리즘을 아래와 같이 설계했다. - 메세지 헤더, 메세지 유저, 메세지 데이터에 해당하는 공유메모리 영역을 선언한다. - 메세지 헤더에는 현재 메세지의 번호가 담기며, 코드를 실행하면 0으로 초기화된다. - 메인 코드 : 클라이언트 들의 접속을 허가하고 fork를 통해 채팅 알고리즘을 수행하는 프로세스를 생성한다. - 채..

[Python] 파이썬 멀티 스레드 채팅 서버 만들기 - 2

기본 코드에 조금 더 살을 붙여서 CLI환경에서 단채 채팅방 환경을 구축했다. 아직 최적화시킬 부분도 남았고, slack처럼 늦게 들어와도 채팅방의 기록을 볼 수 있게 구축하고 싶기 때문에 시간이 남으면 세 번째 작업도 진행할 예정이다. 서버 코드 import socket import argparse import threading import time host = "127.0.0.1" port = 4000 user_list = {} notice_flag = 0 def msg_func(msg): print(msg) for con in user_list.values(): try: con.send(msg.encode('utf-8')) except: print("연결이 비 정상적으로 종료된 소켓 발견") def..

[Python] 파이썬 멀티 스레드 채팅 서버 만들기 - 1

N사 최종 면접 후 멀티 스레드에 대한 이론은 있지만 실전에 약하다는 느낌을 받았다. 아무래도 멀티 스레드 환경에서 프로그래밍을 할 경험이 없어서 더 그런 것 같다. 그! 래! 서! 혼자서라도 멀티 스레드 채팅 서버를 구축해보는 프로젝트를 진행하려고 한다. 기본 코드 Python 게시판에 올려두었던 서버, 클라이언트 코드를 조금 변조해서 뼈대가 될 코드를 작성하였다. - 서버 코드 import socket import argparse import threading import time host = "127.0.0.1" port = 4000 user_list = {} notice_flag = 0 def handle_receive(client_socket, addr, user): while 1: data =..