게임 소켓 연결을 별도의 스레드에서 확인하는 것이 가장 좋습니다. 연결을 계속 수신하는 Runnable
을 만들 수 있습니다.
들어오는 연결을 확인하면 실제로 발생하는 것은 연결을받을 때까지 특정 스레드에 블록을 배치하는 것입니다. 이렇게하면 코드 실행이 중지됩니다. 이 문제를 해결하는 유일한 방법은 병렬 처리입니다. 한 스레드에서 모든 네트워킹 작업을 처리 할 수 있으며 게임 논리를 처리하고 다른 논리에서 렌더링 할 수 있습니다.
비록 여러 스레드에서 실행될 코드를 작성하는 경우 많은 오류가 발생합니다. Java는 잠재적 인 문제를 최소화 할 수있는 몇 가지 도구를 제공하지만 코드가 스레드로부터 안전함을 보장하는 것은 프로그래머에게 달려 있습니다. 병렬 프로그래밍과 관련된 많은 우려 사항에 대해 자세히 설명하는 것은이 질문의 범위를 벗어납니다. 이런 종류의 프로그래밍에서 발생하는 버그는 때로는 재현하고 추적하기가 어렵 기 때문에 약간의 연구를 해보는 것이 좋습니다. 지금은 당신이, 당신이 비슷한을 할 수있는 무엇을하려고 달성하기 위해 Runnable
을 사용하려면이 면책 조항을 준 것을
:
Runnable networkListener =() -> {
//declare and instantiate server here
while(true){
Socket connection = server.accept();
//whatever you would like to do with the connection would go here
}
}
Thread networkThread = new Thread(networkListener);
networkThread.start();
당신은 배치 할 당신의 게임 루프과 전 게임을 중단하지 않고 연결을 수신하는 스레드를 생성합니다. Socket
을 처리하는 방법에 대한 좋은 관용구가 많이 있는데,이를 추적하기 위해 ThreadPool
을 사용하고, 새로운 연결이 생성 될 때마다 Thread
을 새로 산란합니다. 그래서 당신도 그 연구에 대해 연구 할 것을 권합니다.
당신에게 행운을 빈다, 당신이 곧 위험을 감수하고있는 길은 아닙니다.
무엇을 의미합니까? – Caspermartijn
@Caspermartijn 나는 내 게시물 – CraigR8806
을 편집했으며이 실행 파일은 언제든지 시작할 수 있습니다. ?? – Caspermartijn