//////////////////// Main.java ////////////////////
// Main.java
public class Main
{
public static void main(String args[])
{
new DateServer();
}
}
////////////////////////////////////////////////////////////
//////////////////// DateServer.java ////////////////////
// DateServer.java
import java.io.IOException;
import java.net.*;
public class DateServer
{
// クライアントからの接続を受け付けるポート番号
public static final int server_port = 2000;
// デフォルトのサービスを提供する時間(秒)
private final int exec_sec = 10;
ServerSocket server_socket;
public DateServer()
{
try
{
server_socket = new ServerSocket(server_port);
// クライアントの接続を待つループ
while(true)
{
Socket socket = server_socket.accept();
new DateThread(socket, exec_sec).start();
}
}
catch(IOException io_ex)
{
io_ex.printStackTrace();
}
}
}
////////////////////////////////////////////////////////////
//////////////////// DateThread.java ////////////////////
// DateThread.java
import java.io.*;
import java.net.Socket;
import java.text.DateFormat;
import java.util.Date;
public class DateThread extends Thread
{
// クライアントのソケット
private Socket socket;
// サービスを提供する時間
private int exec_sec;
public DateThread(Socket socket, int exec_sec)
{
this.socket = socket;
this.exec_sec = exec_sec;
}
// 日付/時刻をクライアントへ送り返す処理
public void run()
{
try
{
PrintWriter writer = new PrintWriter(socket.getOutputStream());
for(int i=0; i<exec_sec; i++)
{
DateFormat date_format = DateFormat.getDateTimeInstance();
String date_string = date_format.format(new Date());
writer.println(date_string);
writer.flush();
Thread.sleep(1000);
Thread.yield();
}
writer.println("Disconnect by Server");
writer.flush();
socket.close();
}
catch(IOException io_ex)
{
io_ex.printStackTrace();
}
catch(InterruptedException interrupted_ex)
{
interrupted_ex.printStackTrace();
}
}
}
////////////////////////////////////////////////////////////
Source is here. (ZIP Format, 1324Byte, Shift-JIS)