1. 创建服务端
要求:
(1)服务端一直接听客户端。
(2)当每一个客户端与服务端建立连接后,服务端都新建一个线程
(3)线程读取客户端发送的请求,打印输出
package com.wx.socket;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class IOServer {
public static void main(String[] args) throws Exception {
ServerSocket serverSocket = new ServerSocket(8088);
//接收新连接线程
new Thread(()->{
while(true){
try{
//(1)阻塞方法获取新的连接
System.out.println("正在建立连接。。。。");
Socket socket = serverSocket.accept();
//(2) 每个新的连接都创建一个线程,负责数据读取
new Thread(()->{
try{
byte[] bytes = new byte[1024];
InputStream inputStream = socket.getInputStream();
while(true){
int len = 0;
while((len = inputStream.read(bytes)) != -1){
System.out.println("服务器 "+Thread.currentThread().getName()+" 接收客户端消息:"+new String(bytes,0,len));
}
}
}catch (Exception e){
}
}).start();
}catch (Exception e){
}
}
}).start();
}
}
2. 创建客户端
要求:
(1)建立线程
(2)给服务端发送消息
package com.wx.socket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
public class IOClient {
public static void main(String[] args) {
new Thread(()->{
try{
Socket socket = new Socket("localhost",8088);
while(true){
socket.getOutputStream().write((Thread.currentThread().getName()+" "+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+": Hello world").getBytes());
socket.getOutputStream().flush();
Thread.sleep(2000);
}
}catch (Exception e){
}
}).start();
}
}