현재 다중 스레드 서버를 구축해야하는 프로젝트에서 작업 중입니다. 스레드로 작업하기 시작 했으므로 저를 이해해주십시오.다중 스레드 Java 서버
지금까지 Runnable
객체를 구현하는 클래스가 있습니다. 아래 코드는 Runnable
객체가 제공하는 실행 메소드에 대한 코드입니다.
public void run() {
while(true) {
try {
clientSocket = serversocket.accept();
for (int i = 0; i < 100; i++) {
DataOutputStream respond = new DataOutputStream(clientSocket.getOutputStream());
respond.writeUTF("Hello World! " + i);
try {
Thread.sleep(1000);
} catch(InterruptedException e) {
//
}
}
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
}
벨로우는 서버 클래스의 새 개체를 만들고 위협을 만드는 주요 방법입니다. 스레드를 초기화합니다.
public static void main(String args[]) {
new Thread(new Server(1234, "", false)).start();
}
나는 새로운 스레드를 생성하지만 동시에 여러 클라이언트를 제공하지 않는다는 것을 알고 있습니다. 첫 번째 클라이언트는 두 번째 클라이언트가 연결될 때 연결을 닫아야합니다. 한 번에 다른 클라이언트 소켓을 제공 할 다중 서버를 어떻게 만들 수 있습니까? clientSocket = serverSocket.accept();
당신은 Runnable을 구현하는 헬퍼 클래스를 만들 수 있는데 그 하나의 사용자에 대한 데이터 스트림 상호 작용을 처리합니다. 그런 다음 주 클래스에서 각 소켓 수락과 함께이 도우미 클래스를 생성하고 자체 스레드에서 실행하십시오. 이 작업을 수행하는 데 ThreadPool을 사용하는 것이 가장 좋습니다. 오라클에 의한 자습서를 포함하여이 바로 가기에 대한 자습서가 있습니다. 아직 찾지 못했음에 놀랐습니다. 꽤 놀랐습니다. –
ServerSockets에 대한 자습서를 검색하십시오. 이 주제에 대한 각 좋은 자습서는 솔루션에 대한 문제점을 설명 할 것입니다. – mschenk74
검색어에 대한 작업이 필요할 수 있습니다. 다음 Google 검색을 시도해보십시오. [java socket communications tutorial multithreaded] (https://www.google.com/?gws_rd=ssl#q=java+socket+communications+tutorial+multithreaded). 또는 내 링크를 클릭하십시오. 첫 번째 히트. –