服务器代码
```java
package com.itcast.test;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Test1 {
//服务器
public static void main(String[] args) throws Exception {
//创建服务器端
ServerSocket sr = new ServerSocket(30000);
//从服务器获取客户端
Socket accept = sr.accept();//获取客户端
//创建指向客户端的输出流
PrintStream ps = new PrintStream(accept.getOutputStream());//打印输出流
//创建指向客户端的输入流
BufferedReader br = new BufferedReader(new InputStreamReader(accept.getInputStream()));//读取输入流
//开启服务器输出流线程
//用于将控制台的内容发送给客户端
new Thread() {
@Override
public void run() {
//创建指向控制台的输入流
Scanner sc = new Scanner(System.in);
while (true) {
//读取控制台的内容
String s1 = sc.nextLine();
//将从控制台读取到的内容发送到客户端
ps.println(s1);
}
}
}.start();
//开启客户端输入流线程
//用于将从客户端接收到的数据打印到控制台
new Thread() {
@Override
public void run() {
while (true) {
String s1 = null;
try {
//读取来自客户端的一行字符串
s1 = br.readLine();
//获取当前日期打印到控制台
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
} catch (IOException e) {
}
//打印从客户端接收到的字符数据
System.out.println(s1);
}
}
}.start();
}
}
```java
package com.itcast.test;
import java.io.*;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Test2 {
//客户端
//增强版
public static void main(String[] args) throws Exception {
//创建客户端 访问127.0.0.1的服务器 端口30000的应用
Socket s = new Socket("127.0.0.1", 30000);
//获取指向服务器的输出流
PrintStream ps = new PrintStream(s.getOutputStream());//打印输出流
//获取指向服务器的输入流
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));//读取输入流
//创建输出流线程
//用于将读取到的字符串发送到服务器
new Thread() {
@Override
public void run() {
//创建指向控制台的输入流
Scanner sc = new Scanner(System.in);
while (true) {
//读取来自控制台的一行字符串
String s1 = sc.nextLine();
//将读取到的字符串发送到服务器
ps.println(s1);
}
}
}.start();
//创建输入流线程
//用于将从服务器获取到的字符串打印到控制台
new Thread() {
@Override
public void run() {
while (true) {
String s1 = null;
try {
//读取来自服务器的一行字符
s1 = br.readLine();
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
} catch (IOException e) {
}
System.out.println(s1);
}
}
}.start();
}
}
结果如下:![在这里插入图片描述](https://img-blog.csdnimg.cn/20191201120728456.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjgzNzIz,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191201120823813.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjgzNzIz,size_16,color_FFFFFF,t_70)