소켓프로그래밍질문 thread 간의 자료 공유를 제한하는 방법
달달항사탕
질문 제목 : 소켓프로그래밍 thread 간의 자료 공유를 제한하는 방법 질문 요약 :multi thread를 구현해서 다중클라이언트 통신이 가능하게 할때 특정한 자료를 thread끼리 공유하지 않는 방법질문 내용 :
대리운전 프로그램을 리눅스 소켓 통신을 이용하여 구현하려고 합니다. (그냥 학생공부용)
일단 회원가입을 해야하기 때문에
회사직원의 이름,아이디,패스워드//기사의 이름,아이디,기사번호,패스워드//주문접수 번호,목적지,출발지,요금
위의 것을 서버에 저장해 놓구 서버와 multi thread로 다중클라이언트가 통신할때 이 정보들을 모두 공유할 것입니다.
또 메뉴 선택 모드 때문에 첫번째 모드와 기사모드, 직원모드가 있는데 이것은 각각의 클라이언트의 선택사항이기 때문에 공유가 되서는 안됩니다.
1:1 통신은 구현이 된 상태이고, 다중 클라이언트 통신을 해보려고 했는데
시스템이 뭐 그리 큰것도 아니고 process로 다중클라이언트를 구현하는 것이 더 쉬울 것 같아서 해보았떠니
IPC통신을 하지 않으면 정보들을 공유하지 못해서 한 클라이언트에서 이미 가입을 하고 주문을 접수하여도 다른 클라이언트에서 인식이 되지 않았습니다.
정보공유를 위해 thread로 구현을 하였더니 모드마져 공유를 하는 바람에 프로그램이 정상적으로 작동하지 않았습니다.
thread를 이용해서 특정정보를 공유하지 않는 방법이 있다고 하는대 혹시 아시는 분 있으시면 알려주시면 감사하겠습니다.
+++++
지금 TCP통신을 사용하고 있는대 두 클라이언트가 동시에 접속하여 통신하는 것이면 UDP통신을 사용하여야 하나요?
TCP통신은 브로드캐스트가 안된다고 들어서요... 한 클라이언트가 서버에게 정보를 전송하면 서버는 그걸 저장하였다가 다른 클라이언트에게 알려줘야하는 그런 상황이기 때문에....브로드캐스트를 해야하는 건가......??
-
행복녀
어짜피 서버는 접속한 모든 클라이언트를 알고 있기 때문에 while로 돌리면서 보낸 클라를 제외한 모든 클라에게 전송하면 됩니다. 그리고 udp는 데이타 소실 위험이 있기 때문에 중요한 데이타에서는 사용하지 않는게 좋습니다. udp를 사용할려면 데이타 소실 체크를 본인이 직접 다 구현해 주셔야 합니다.
-
WhiteCat
답변 감사합니다. UDP로 하면 신뢰성이 떨어진다고 하는데 이런 간단한 프로그램의 경우 그럴일은 거의 없을까요? 그리고 하나의 쓰레드만 해당값에 접근하는것이가요??? 아직잘몰라서.... 제가 생각할때 모든 쓰레드가 동시에 서버의 저장된값을들을 읽어내는대 특정 값만 모두 공유하지 않는걸로 하고 싶은건대..... 아무튼 뮤텍스부분을 공부해보도록하겠습니다
-
지희
Udp를사용하셔야 하는게 맞을거 같구요 쓰레드 공유문제를말씀하시는거같은데 c#의 경우는 dispatcher를 사용하시면될거같구요..c쪽이면 뮤텍스등으로 한순간에 하나의쓰레드만 해당값을 접근하도록 하는게있습니다 그부분을참고해보시는게좋을거같네요^^
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2695626 | 피보나치수열 과제 때문에 질문 드립니다. (6) | 옆집언니 | 2025-05-22 |
2695595 | 포인트공부중입니다 int형에서 4=1 인가요? (3) | 족장 | 2025-05-22 |
2695567 | 드라이브 고유번호를 가져오는 함수 (2) | 초코맛사탕 | 2025-05-21 |
2695533 | 음수의 산술변환! 질문이요 ㅠㅠ... (4) | 꽃여름 | 2025-05-21 |
2695506 | 구조체 배열 이용 도서목록 출력 프로그램 (1) | 가을귀 | 2025-05-21 |
2695450 | c언어 함수 질문이요.... | 이슬비 | 2025-05-20 |
2695403 | VirtualAlloc함수 및 메모리 질문 | 크리에이터 | 2025-05-20 |
2695355 | c언어 for함수 | 미쿡 | 2025-05-19 |
2695327 | 안녕하세요 제가 이번에 좀 큰 프로그램을.. | 악당 | 2025-05-19 |
2695295 | mutex동기화의 thread기반 채팅 서버소스 질문입니다 | 그루터기 | 2025-05-19 |
2695270 | 질문이요..swap 관한겁니다..ㅠㅠ (3) | 콩알녀 | 2025-05-19 |
2695244 | 노땅초보궁금한게 하나 있는데요..반복문(while문)초보자질문 (6) | 큰꽃늘 | 2025-05-18 |
2695166 | do while 문 어떤것이잘못된건지 모르겠어요 (2) | 아이폰 | 2025-05-18 |
2695122 | 구조체에 대해 물어보고 싶은게 있습니다 ^^^.. (7) | 수련 | 2025-05-17 |
2695091 | txt 파일 입출력 후 2차 배열에 저장하기입니다. (3) | 헛장사 | 2025-05-17 |
2695063 | 수도요금 프로그램좀 짜주세요. | 시내 | 2025-05-17 |
2695033 | 답변좀요ㅠㅠ (1) | 비사벌 | 2025-05-16 |
2695010 | C++의 STL은 왜 굳이 템플릿화 시켜서 라이브러리를 만드나요? (초보수준의 질문..) (2) | 엘보어 | 2025-05-16 |
2694958 | 로직이 변한다는 것에 대해서 궁금합니다. | 튼동 | 2025-05-16 |
2694929 | 열혈강의 25-2 두번째 문제 질문 | 지우개 | 2025-05-15 |