채팅 서버를 만들고 있는데 하나 이상의 연결을 설정할 수 없습니다. 이는 소켓이 하나뿐이기 때문입니다. 스레드가 한 번에 둘 이상의 소켓 연결을 처리 할 수 있지만 각 클라이언트는 자신의 소켓을 가져야한다는 것을 읽었습니다. 벽 콘센트처럼. 플러그 당 1 개의 콘센트가 있어야합니다. 어떻게 각 클라이언트가 서버와 통신하는 데 사용할 소켓을 만드나요? 나는 너희들을 도울 수있는 약간의 코드를 제공 할 것이다. 단일 소켓 (연결)이 허용되는 곳입니다. 여기Java 사용자가 연결된 사용자 당 새 소켓을 생성하는 데 도움이됩니다.
private void waitForConnection() throws IOException
{
connection = server.accept();
showMessage("\nNow connected to " + connection.getInetAddress().toString());
clientCount += 1;
}
코드는 서버 시작시 호출되는 경우입니다 :
public void startRunning()
{
try
{
server = new ServerSocket(1337, 10);
while(true)
{
try
{
showMessage("Waiting For a Player To Connect...");
waitForConnection();
setupStreams();
whileChatting();
}
catch(EOFException eofException)
{
showMessage("\n Server ended the connection! ");
}
finally
{
closeConnections();
}
}
}
catch(IOException ioException)
{
ioException.printStackTrace();
}
}
지금이 코드는 첫 번째 연결된 클라이언트에 대해 완벽하게 작동합니다. 다른 모든 사람들은 간단히 연결할 수 없습니다. 답변을 제출 한 모든 사람들에게 미리 감사드립니다.