JAVA網路程式設計實現基於TCP協議的時間服務(向伺服器查詢當前時間)
阿新 • • 發佈:2019-02-19
服務端程式:
package doc_02_tcp.server;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 模組說明: 伺服器端程式
*
*/
public class TimeServer {
public static void main(String[] args) {
try {
// 列印本機ip地址
InetAddress address = InetAddress.getLocalHost();
System.out.println(address);
// 建立一個serversocket,監聽客戶端請求
ServerSocket ss = new ServerSocket(9999);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
// 採用迴圈不斷接受來自客戶端的請求
while (true) {
Socket socket = ss.accept();
PrintWriter out = new PrintWriter(socket.getOutputStream());
out.println(sdf.format(new Date()));
out.flush();
out.close();
socket.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
客戶端程式:
package doc_02_tcp.client;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* 模組說明: 客戶端程式
*
*/
public class TimeClient {
public static void main(String[] args) {
try {
String localhost = String.valueOf(InetAddress.getLocalHost()).split("/")[1];
Socket socket = new Socket(localhost, 9999);
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String currentTime = input.readLine();
System.out.println("current time from server:" + currentTime);
input.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}