客户端每两秒发送一个带时间戳的hell server 字符串给服务端 服务端接收数据并打印
服务端:
package net.test;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class BIOServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8000);
while (true) {
// 阻塞等待接收客户端的连接
Socket socket= serverSocket.accept();
// 为每一个新的连接创建一个线程,负责读取数据
new Thread(()->{
int len;
byte [] data = new byte[1024];
try {
InputStream in = socket.getInputStream();
while ((len = in.read(data)) != -1) {
System.out.println("客户端["+socket.getInetAddress().getHostAddress()+": "+socket.getPort()+"]说:" + new String(data,0,len));
}
} catch (IOException e) {
e.printStackTrace();
}
}).start();
}
}
}
客户端:
package net.test;
import java.io.IOException;
import java.net.Socket;
import java.util.Date;
import java.util.concurrent.TimeUnit;
public class BIOClient {
public static void main(String[] args) throws IOException, InterruptedException {
Socket socket = new Socket("localhost",8000);
while (true) {
String hello = new Date()+" hello server";
System.out.println(hello);
socket.getOutputStream().write(hello.getBytes());
TimeUnit.SECONDS.sleep(2);
}
}
}