packagetestlxd;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStream;importjava.net.ServerSocket;importjava.net.Socket;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.Scanner;public class Server_Test extendsThread {
ServerSocket server= null;
Socket socket= null;public Server_Test(intport) {try{
server= newServerSocket(port);
}catch(IOException e) {
e.printStackTrace();
}
}
@Overridepublic voidrun() {super.run();try{
System.out.println(getdate()+ " 等待客户端连接...");
socket=server.accept();new sendMessThread().start();//连接并返回socket后,再启用发送消息线程
System.out.println(getdate() + " 客户端 (" + socket.getInetAddress().getHostAddress() + ") 连接成功...");
InputStream in=socket.getInputStream();int len = 0;byte[] buf = new byte[1024];while ((len = in.read(buf)) != -1) {
System.out.println(getdate()+ " 客户端: ("
+ socket.getInetAddress().getHostAddress() + ")说:"
+ new String(buf, 0, len, "UTF-8"));
}
}catch(IOException e) {
e.printStackTrace();
}
}public staticString getdate() {
Date date= newDate();
SimpleDateFormat format= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String result=format.format(date);returnresult;
}class sendMessThread extendsThread {
@Overridepublic voidrun() {super.run();
Scanner scanner= null;
OutputStream out= null;try{if (socket != null) {
scanner= newScanner(System.in);
out=socket.getOutputStream();
String in= "";do{
in=scanner.next();
out.write(("" + in).getBytes("UTF-8"));
out.flush();//清空缓存区的内容
} while (!in.equals("q"));
scanner.close();try{
out.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}catch(IOException e) {
e.printStackTrace();
}
}
}//函数入口
public static voidmain(String[] args) {
Server_Test server= new Server_Test(1234);
server.start();
}
}