반응형

ComputerScience 3

[c++] 다중 클라이언트 tcp 구현 (근데 이제 뮤텍스를 곁들인..)

앞서 구현한 단일 클라이언트 채팅에서 서버가 메세지를 받으면, 다른 클라이언트들에게 메세지를 broadcast 하는 형식으로 코드를 확장해 보았다.broadcast : 씨를 넓게 뿌리다 : 하나의 신호나 메시지를 여러 수신자에게 동시에 전달하는 과정단일 클라이언트와 달리, 다중 클라이언트의 경우 연결된 클라이언트 소켓의 목록을 여러 스레드가 동시에 접근/수정하게되면 문제가 발생할수 있으므로 뮤텍스로 공유자원(client 목록)에 대한 접근 관리를 해주어야함 (ex 한 스레드가 클라이언트를 삭제하는 동안 다른 스레드가 clients를 읽으려 하면 데이터 손상 또는 잘못된 참조가 발생할 수있음)(아래 코드에서 스레드는 클라이언트 각각의 통신을 담당하는 독립적인 실행 단위를 말한다. 즉, 하나의 클라이언트와의..

[c++] tcp 소켓 통신을 이용한 단일 클라이언트 채팅 프로그램 구현

네트워크 소켓 통신에 대한 개념을 익히고 사용해보기 위해 c++을 이용해 간단한 채팅을 구현해보여고 한다.socket은 기본적으로 으로 정의 되며, 클라이언트와는 달리 서버 측에서는 port  넘버를 명시적으로 바인딩 해주어야 한다.udp 와는 달리, tcp는 ip 주소와 port number로 유니크하게 식별되지 않음.why?서버에서 대기하고 있는 listen 소켓과 클라이언트 사이 3-way handshake 과정을 통해 클라이언트와 connet 되면 서버 측에서는 소켓을 하나 더 열어 new 소켓과 통신을 하게됨(서버 측에서는 소켓이 여러 개)-> 서버에서는 여러 개의 소켓을 열게 되는 데, 소켓들의 ip 주소와 port number가 같다따라서 listen 이후에는 서버의 어느 소켓으로 통신할지 ..

[C언어] strcpy 함수

strcpy 함수는 C 언어에서 문자열을 복사하는 함수이다strcpy 함수의 형식: char *strcpy(char *destination, const char *source);destination: 문자열이 복사될 목적지. 이 위치에 source 문자열이 복사됨source: 원본 문자열로, 이 문자열의 내용을 destination에 복사기능:source 문자열을 destination에 복사하고, 널 종료 문자(\0)도 함께 복사.destination에는 source보다 충분히 큰 메모리 공간이 있어야 함. 그렇지 않으면 메모리 손상 발생가능. (실무에서 C에 배열크기를 정해주는 이유)아래 계속예시 코드:#include #include int main() { char src[] = "Hello, W..

ComputerScience 2024.09.25
반응형