Java でマルチスレッド サーバーを実装する方法は? サーバーはポート (たとえば 5000) をリッスンし、別のスレッドで接続を提供し、さらに多くのクライアントをリッスンし続けます。
1 に答える
3
典型的な例を次に示します。
ServerSocket ss = new ServerSocket(port);
ExecutorService executor = Executors.newCachedThreadPool();
while(true)
{
Socket s = ss.accept();
Runnable r = new TaskImplementsRunnable(s);
executor.submit(r)
}
public class TaskImplementsRunnable implements Runnable
{
private Socket socket;
public TaskImplementsRunnable(Socket socket)
{
this.socket = socket;
}
@Override
public void run()
{
try
{
PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String command;
while((command = reader.readLine()) != null)
{
if(command.equalsIgnoreCase("command 1"))
{
writer.println("This is command 1!");
}
else if(command.equalsIgnoreCase("command 2"))
{
writer.println("This is command 2!");
}
else if(command.equalsIgnoreCase("exit"))
{
break;
}
else
{
writer.println("This is unknown command!");
}
}
}
catch(IOException e)
{
e.printStackTrace();
}
try
{
writer.close();
reader.close();
}
catch(IOException e){}
}
}
于 2013-03-11T23:47:51.567 に答える