一、创建服务端
二、创建客户端
三、先启用服务端,再启用客户端
四、原理如下图所示
创建服务端
package day1;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import sun.print.PrinterJobWrapper;
public class Server {
public static void main(String[] args) {
try {
//创建一个serversocket,绑定监听窗口
ServerSocket serverSocket = new ServerSocket(18888);
//开启accept
Socket socket = serverSocket.accept();
//创建bufferreader接收客户端的请求数据,源数据对象来自客户端发起的请求的socket
BufferedReader bufferReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String requestData = bufferReader.readLine();
System.out.println("接收到客户端的请求数据:"+requestData);
//创建printwriter发送服务端响应数据,接收数据流对象也来自socket
PrintWriter printWriter = new PrintWriter(socket.getOutputStream());
//写入响应数据
printWriter.println("服务端已收到请求,响应数据为"+requestData);
//使用flush()方法强制发送数据而不是等到缓冲区满了后才发送
printWriter.flush();
//关闭资源
printWriter.close();
bufferReader.close();
socket.close();
serverSocket.close();
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.toString());
}
}
}
创建客户端
package day1;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import sun.print.PrinterJobWrapper;
public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
//创建socket用来发起请求数据,设置请求Ip和端口
Socket socket = new Socket("127.0.0.1", 18888);
//通过socket的流对象创建printwriter用于发送请求数据,创建bufferreader用于接收服务端响应数据
PrintWriter printWriter = new PrintWriter(socket.getOutputStream());
BufferedReader bufferReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//发送数据
String requestData = "客户端请求数据";
printWriter.println(requestData);
printWriter.flush();
//接收服务端响应数据
String responseData = bufferReader.readLine();
System.out.println("接收服务端响应数据:"+responseData);
//关闭资源
printWriter.close();
bufferReader.close();
socket.close();
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.toString());
}
}
}