TCP/IP를 사용하여 Java에서 다중 클라이언트/서버 응용 프로그램을 개발 중입니다. 내 서버는 각 clientSocket (clientSocket = serverSocket.accept();)에 대해 새 스레드를 만듭니다. 문제는 실행중인 모든 스레드가 서로에 대해 알 수있는 방법 (즉, 채팅중인 모든 온라인 사용자에게 메시지를 브로드 캐스트하는 방법)을 파악하는 것 같습니다. 내 스레드가 새 사용자가 서버에 연결할 때뿐만 아니라 사용자가 서버와 연결을 끊을 때를 알 수있는 효율적인 방법은 무엇입니까?멀티 스레드 서버 (TCP/IP)를 사용하는 클라이언트/서버 chatroom
2
A
답변
0
사용자 위치에있는 사용자는 소켓 스레드 및 메시지 큐에 대한 참조가있는 추가 큐 스레드를 만듭니다. 모든 소켓 스레드는 대기열 스레드에 메시지를 대기열에 넣을 수 있습니다. 그러면 대기열 스레드는 모든 소켓 스레드에 메시지를 보냅니다 (따라서 소켓 스레드는 대기열에 대한 참조가 필요합니다).
ArryList를 기대해야합니까? 소켓 스레드의 변경이 반복기를 사용하여 반복해야합니다.
는 의견에 귀하의 질문에 대답하려면 : 성능연결 당 스레드가 강렬한 매우 자원 (10.000 연결을 상상)입니다 시작. 그래서 그것을 처리 할 다른 방법이 있습니다.
아파치 MINA는 사용자가 쉽게 높은 성능과 높은 확장 성 네트워크 응용 프로그램을 개발하는 데 도움이되는 네트워크 응용 프로그램 프레임 워크 : ThreadPoolExecutor
http://mina.apache.org 내가의 definetly 미나와 함께 갈 것
- . Java NIO를 통해 TCP/IP 및 UDP/IP와 같은 다양한 전송을 통해 추상 이벤트 구동 비동기 API를 제공합니다.
MINA 용 그물에 대한 많은 자습서가 있습니다.
어쩌면 조금 지나친 것입니다.하지만 관심이 있다면 가치가 있습니다.
[편집]
의 단지 10-15 클라이언트가 연결 당 스레드를 사용하는 것이 괜찮을 경우
...관련 문제
- 1. Python을 사용하는 멀티 스레드 UDP 서버
- 2. 멀티 스레드 채팅 서버
- 3. 멀티 스레드 서버 문제
- 4. 멀티 스레드 업데이트 서버
- 5. 멀티 스레드 서버
- 6. 멀티 스레드 udp 서버/클라이언트
- 7. 멀티 스레드 TCP 서버 C
- 8. 파이썬 트위스트 멀티 스레드 서버
- 9. Java의 멀티 스레드 서버 프로그램
- 10. 멀티 스레드 서버 소켓 예외는
- 11. Java의 멀티 스레드 채팅 서버
- 12. UNIX 기반 chatroom :: getch(), POSIX 스레드
- 13. ORM을 사용하는 멀티 스레드 인서트?
- 14. 타이머를 사용하는 멀티 스레드 그래픽?
- 15. 클라이언트 서버 멀티 스레드 응용 프로그램
- 16. 데이터베이스를 사용하는 멀티 스레드 프로그램의 아키텍쳐
- 17. 네트워크 문제! (멀티 스레드 클라이언트/서버)
- 18. Linux에 멀티 스레드 TCP 서버 작성
- 19. 소켓이있는 멀티 스레드 채팅 서버 만들기
- 20. 부스트 Asio 멀티 스레드 TCP 동기 서버
- 21. Qt에서 효율적인 멀티 스레드 서버 구현
- 22. 레일즈 개발 서버, PDFKit 및 멀티 스레드
- 23. C - 서버 클라이언트 멀티 스레드 pthread_create가 실패했습니다
- 24. vb.net 멀티 스레드 채팅 클라이언트 및 서버
- 25. C#의 멀티 스레드 TCP 서버?
- 26. 자바 멀티 스레드 서버 클라이언트 통신
- 27. 웹 워커를 사용하는 크롬의 멀티 스레드 기능성?
- 28. 멀티 스레드, 스레드 동기화
- 29. 멀티 스레드 부스트 - asio 서버 (부스트 비동기 서버 튜토리얼)
- 30. Firebase를 사용하는 반경이있는 공용 chatroom (제안 요청)
당신은 각 연결에 대한 스레드를 startig되고는 efficent되고 싶어? 피크에 앱을 사용하고 싶은 분은 몇 점입니까? –
정말 대학 교과 과정이기 때문에 10-15 시까 지 말씀 드리고자합니다. 그런데 각 연결마다 새 스레드를 시작하는 것이 효율적이지 않은 것은 무엇입니까? – user2000920
내 게시물이 도움이 되었습니까? :) –